解题思路
更新一个当前所能跳跃到的最远距离,如果这个最远距离大于等于nums.length就说明可以跳到目标点
因为nums.length<=30000,所以DFS一定会超时
代码
class Solution {
public boolean canJump(int[] nums) {
int n = nums.length;
if(n==1) return true;
int maxJump = nums[0];//当前可以跳到的最远距离
for(int i=0;i<=maxJump;i++){
if(i+nums[i]>maxJump){//当前下标+当前条约距离大于最远距离
maxJump = i+nums[i];
}
if(maxJump>=n-1){//已经可以跳到目标点
return true;
}
}
return false;
}
}