122. Best Time to Buy and Sell Stock II
- 贪心
- 一图解决问题
-
java class Solution { public int maxProfit(int[] prices) { int maxProfit = 0; // day 1 no profits, so start from index 1 for( int i = 1; i < prices.length; i++){ int profit = prices[i] - prices[i - 1]; // only collect positive profit if(profit > 0){ maxProfit += profit; } } return maxProfit; } }
55. Jump Game
- 思路
- 贪心
- 遍历
- 为了能取到index为0的值,范围要设置为i
- curScope = i +nums[i]
- i就是已经走过的步数,nums[i]就是能走的步数
- curScope的最大值就是能走到的最大值,跟长度-1比较一下
- 贪心
-
java class Solution { public boolean canJump(int[] nums) { int length = 0; // i = nums.length -1){ return true; } } return false; } }
45. Jump Game II
- 思路
- 遍历数组
- 一个curScope记录当前的最大步幅
- 在走(遍历的同时)用nextScope记录,并不断更新下一步的最大步幅
- 当走到curScope的最大步幅的时候
- 如果没有到底,就step+1,curScope更新为nextScope
- 当没走到curScope最大步幅就到底的了时候
- 这种情况包括在最后return steps里
- 遍历数组
-
java class Solution { public int jump(int[] nums) { int curScope = 0; int steps = 0; int nextScope = 0; for (int i = 0; i < nums.length; i++){ //记录下一步的最大步数 nextScope = Math.max(i+ nums[i], nextScope); //到了前一个选取index给的最大步数的时候 if( i == curScope ){ //如果没有走到底,加一步,curScope更新 if ( curScope != nums.length -1){ steps++; curScope = nextScope; //如果下一步能走到底,出循环return, 这步其实不要也可以 if (nextScope >= nums.length - 1){ break; } //如果走到底了,直接出循环return }else break; } } // 这里包括了“当步幅小于curScope就到底了的情况” return steps; } }