Leetcode (力扣)做题记录 hot100(543,102,35,101)
力扣第543题:二叉树的直径
543. 二叉树的直径 - 力扣(LeetCode)
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val = val;* this.left = left;* this.right = right;* }* }*/
class Solution {private int ans;public int diameterOfBinaryTree(TreeNode root) {ans = 0;dfs(root);return ans;}private int dfs(TreeNode root){if(root == null){return 0;}int l = dfs(root.left);int r = dfs(root.right);ans = Math.max(ans,l + r);//计算最大路径return Math.max(l ,r) +1 ;//比较左和右谁大}
}
力扣第102题:二叉树的层序遍历
102. 二叉树的层序遍历 - 力扣(LeetCode)
首先创建一个队列用于不断弹出元素,首先先把root进去,然后取值,并把null排除,不断的向队列里面添加后续节点。
class Solution {public List<List<Integer>> levelOrder(TreeNode root) {ArrayList<List<Integer>> arrayList = new ArrayList<>();if(root == null){return arrayList;}Deque<TreeNode> deque = new LinkedList<>();deque.offer(root);while(!deque.isEmpty()){ArrayList<Integer> valList = new ArrayList<>();int n = deque.size();for(int i = 0;i< n ;i++){TreeNode s = deque.poll();valList.add(s.val);if(s.left != null){deque.offer(s.left);}if(s.right != null){deque.offer(s.right);}}arrayList.add(valList);} return arrayList;}
}
力扣第35题:搜索插入位置
35. 搜索插入位置 - 力扣(LeetCode)
二分查找
class Solution {public int searchInsert(int[] nums, int target) {int left = 0;int right = nums.length - 1;while(left <= right){int mid = (left + right) /2;if(target < nums[mid]){right = mid - 1;}else if(target > nums[mid]){left = mid +1;}else{return mid;}}return left;}
}
力扣第70题:爬楼梯
70. 爬楼梯 - 力扣(LeetCode)
class Solution {public int climbStairs(int n) {int p =0 ,q = 0,r = 1;for(int i = 0; i <n;i++){p =q;q = r;r = p +q;}return r;}
}
本文相关图片资源来自于网络中,如有侵权请联系删除!