
102. 二叉树的层序遍历二叉树的根节点root返回其节点值的层序遍历。 即逐层地从左到右访问所有节点。class Solution { public ListListInteger levelOrder(TreeNode root) { Queue TreeNode queue new LinkedList();//创建队列 ListListInteger res new ArrayList();//存放答案的数组列表 if(root ! null){//根节点不为空即放入queue queue.add(root); } while(!queue.isEmpty()){ ListInteger tmp new ArrayList();//创建Tmp列表存放单层的结点 for(int i queue.size();i 0 ;i--){//遍历所有已存结点 TreeNode node queue.poll();//取出结点 tmp.add(node.val);//tmp中加入结点 if(node.left ! null)queue.add(node.left);//下一层扩展left right if(node.right ! null)queue.add(node.right); } res.add(tmp); } return res; } }198. 打家劫舍你是一个专业的小偷计划偷窃沿街的房屋。每间房内都藏有一定的现金影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统如果两间相邻的房屋在同一晚上被小偷闯入系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组计算你不触动警报装置的情况下一夜之内能够偷窃到的最高金额。示例 1输入[1,2,3,1]输出4解释偷窃 1 号房屋 (金额 1) 然后偷窃 3 号房屋 (金额 3)。 偷窃到的最高金额 1 3 4 。示例 2输入[2,7,9,3,1]输出12解释偷窃 1 号房屋 (金额 2), 偷窃 3 号房屋 (金额 9)接着偷窃 5 号房屋 (金额 1)。 偷窃到的最高金额 2 9 1 12 。class Solution { public int rob(int[] nums) { int n nums.length;//有多少个房子 if(n 0) return 0;//房子为0返回 int[] dp new int[n];//dp数组 dp[0] nums[0];//第一个房子价钱给到 for(int i 1;in;i){ if(i 2){//第一次dp里只能为1或第二个房子 dp[i] Math.max(dp[i-1],0nums[i]); } else{ dp[i] Math.max(dp[i-2] nums[i],dp[i-1]);//后续只能为上一个房子或上上一个加现在的。 } } return dp[n-1]; } }力扣70爬楼梯class Solution { public int climbStairs(int n) { int[] dp new int[n1]; dp[0] 1; dp[1] 1; for(int i 2;i n; i){ dp[i] dp[i-2] dp[i-1]; } return dp[n]; } }55.跳跃游戏给你一个非负整数数组nums你最初位于数组的第一个下标。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标如果可以返回true否则返回false。示例 1输入nums [2,3,1,1,4]输出true解释可以先跳 1 步从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。示例 2输入nums [3,2,1,0,4]输出false解释无论怎样总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 所以永远不可能到达最后一个下标。class Solution { public boolean canJump(int[] nums) { int mx 0; for(int i 0;i nums.length;i){ if(i mx) return false; else{ mx Math.max(mx,inums[i]); } } return true; } }