目标位置从数组最右边开始,记作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;
}
}

本文介绍了一种判断数组中是否存在从任意位置到达数组末尾路径的算法。通过从数组末尾开始,寻找能到达当前位置的最远点,逐步向前推进,直至判断出是否能够成功跳跃至数组起始位置。
381

被折叠的 条评论
为什么被折叠?



