目标位置从数组最右边开始,记作i,从左边开始找到第一个能跳到那的,即是距离那个位置最远的地方,记作j
找到一个后,目标位置换成那个位置,再找下一个
边界条件:
若中间发现哪一步跳不到,则flase
若循环结束后j==0,则true
class Solution {
public boolean canJump(int[] nums) {
int i=nums.length-1;
while(i>0){
int j=0;
while(j<i&&nums[j]<i-j)
{
j++;
}
if(j==i)
return false;
i=j;
}
if(i==0)
return true;
return false;
}
}