122.买卖股票的最佳时机 II
122. 买卖股票的最佳时机 II
思路比较简单
class Solution {public int maxProfit(int[] prices) {int res=0,sum=0;for(int i=0;i<prices.length-1;i++){if(prices[i+1]-prices[i]>0){sum+=prices[i+1]-prices[i];}res=sum>res?sum:res;}return res;}
}
55. 跳跃游戏
思路:贪心,index是能到达的最远下标,思路比较简单
代码实现
class Solution {public boolean canJump(int[] nums) {if (nums.length == 1) return true; // 只有一个元素,就是能达到if(nums[0]==0) return false;int index=0;for(int i=0;i<=index;i++){//这里要i<=index,而不是nums.length-1index=Math.max(index,i+nums[i]);if(index>=nums.length-1){return true;}}return false;}
}
45. 跳跃游戏 II
45. 跳跃游戏 II
思路:第2遍做了,还是不会我哭
再次深刻写下详细的注释
class Solution {public int jump(int[] nums) {int count=0;int end=0;//记录int maxposition=0;//记录下一次跳跃能到达的最大下标//注意点1 遍历数组不用遍历到nums[len-1],为什么?因为到最后我们的end其实是>=len-1的,如果让i==len-1而恰巧此时的en刚好也是len-1的话,就平白增加一次count//注意点2 一个一个遍历,为什么要一个一个遍历?因为从下标i到最远位置,每个下标x的nums[x]都未知,谁知道哪个下标才是这个范围中最大的,因此我们需要遍历for(int i=0;i<nums.length-1;i++){maxposition=Math.max(maxposition,i+nums[i]);//从下标i出发能到达的最远位置if(end==i){//说明就是从下标i-->最远位置都遍历过了,这个时候就可以放心地更新end来确定最远位置end=maxposition;count++;}if(end>=nums.length-1){return count;}}return 0;}
}