看能不能跳跃到最后,主要是看能不能跳过0,只要跳过了0就可以往下跳。
class Solution {
public boolean canJump(int[] nums) {
if(nums.length<=1)
return true; //如果数组长度小于等于1,不用跳直接就能到最后的位置
for(int i=0;i<nums.length;i++){
if(0==nums[i]){
if(0==i)
return false; //如果索引为0的位置数值为0,则无法跳跃
int j;
for(j=i-1;j>=0;j--){
if(nums[j]>i-j)
break; //此处是证明可以跳出目前这个0
}
if(j==-1&&nums[0]<=i&&i<nums.length-1)
return false; /*此处判断是上述for循环执行到头都没找到可以跳出当前0的数,最后还要判断i是否是数组最后的位置,因为跳跃只需要能到达最后即可*/
}
}
return true;
}
}