● 122.买卖股票的最佳时机II
class Solution { public int maxProfit(int[] prices) { int result =0 ; for(int i = 1;i<prices.length;i++){ result += Math.max(prices[i]-prices[i-1],0); } return result; } }
● 55. 跳跃游戏
// 源代码是对nums.length == 1进行分析过了的 // 虽然这个代码也可以通过,但是感觉没有分析特殊情况还是不太好 class Solution { public boolean canJump(int[] nums) { //其实就是遍历每个元素给出的范围 //然后判断是否可以走到最后一个元素 /* if(nums.length==1){ return true; } 因为我们一开始的位置就是元素的第一个 */ int cover = 0; for(int i = 0;i<=cover;i++){ cover = Math.max(i+nums[i],cover); //i + nums[i] 才是我们元素给出的范围 if(cover >= nums.length-1){ return true; } } return false; } }
● 45.跳跃游戏II
class Solution { public int jump(int[] nums) { if(nums == null || nums.length == 0 || nums.length == 1){ return 0; } int count = 0; int curDistance = 0; //当前覆盖的最大区域 int maxDistance = 0; //指针遍历到的区域的最大范围 for(int i = 0;i<nums.length;i++){ maxDistance = Math.max(maxDistance,i+nums[i]); if(maxDistance >= nums.length-1){ count++; break; } if(i== curDistance){ //遍历到最大区域,还没有到达终点,就需要换下一个在cur范围内的所包含的下一个最大范围 curDistance = maxDistance; count++; } } return count; } }