Leetcode55 跳跃游戏1
class Solution {
public boolean canJump(int[] nums) {
int max=0;//最大的距离
for(int i=0;i<nums.length;i++){
if(max<i) return false;
max=Math.max(max,i+nums[i]);
}
return true;
}
}
如果用左神的思想,就是双指针那个:
class Solution {
public boolean canJump(int[] nums) {
int cur=0;
int next=nums[0];
for(int i=1;i<nums.length;i++){
if(cur<i&&next<i){//这里和第一种方法是一样 ,如果在cur范围内不做任何变动
//如果i超过cur,必须更新cur,和next,但是要有个前提,就是next要能走到i
//如果next走不到i,那就报错,就这个意思。
return false;
}
cur=next;
next=Math.max(next,i+nums[i]);
}
return true;
}
}