题解
从题目整体去把握,不一定非要明确一次究竟跳几步,在当前点的覆盖范围内,去计算在这个范围内的点,是否有某一点加上它的值能够到达或超过最后一个元素,每次达到一个点就计算,如果比当前覆盖范围更大,就去更新。
class Solution {
public boolean canJump(int[] nums) {
if(nums.length==1)
return true;
int coverage=nums[0];
for(int i=0;i<=coverage;i++){
coverage=Math.max(coverage,i+nums[i]);
if(coverage>=nums.length-1)
return true;
}
return false;
}
}