题目链接:122.买卖股票的最佳时机II
看完代码随想录之后的想法:
简单
题目链接:55. 跳跃游戏
看完代码随想录之后的想法:
我们从第一个数开始,我们求的它的下标+它的值,就是它可以走的最大距离,也就是说到最大距离中间的位置都可以达到,也就是覆盖范围,我们再从覆盖范围中访问每一下标,更新最远的距离;如果最远距离>=nums.length - 1;说明可以;
class Solution {
public boolean canJump(int[] nums) {
int index = 0;
for(int i = 0; i <= index && i < nums.length; i++) {
index = Math.max(index, i + nums[i]);
}
if(index >= nums.length - 1)
return true;
return false;
}
}
题目链接: 45.跳跃游戏II
看完代码随想录之后的想法:
这道题在覆盖范围内,我们寻找每一个位置能达到的最远的地方然后比较出最大的距离我们,这个时候我们更新覆盖范围;直到最远的距离>=nums.length - 1;
class Solution {
public int jump(int[] nums) {
int resIndex = 0;
int start = 0;
int end = nums[0];
int count = 0;
while(resIndex < nums.length - 1) {
end = resIndex;
count++;
for(int i = start; i <= end; i++) {
resIndex = Math.max(resIndex, i + nums[i]);
}
start = end + 1;
}
return count;
}
}