题目
方法一:
动态规划,每个位置代表从当前位置还可以走多远的位置。
class Solution {
public boolean canJump(int[] nums) {
int len = nums.length;
int[] dp = new int[len];
for(int i=1;i<len;i++){
dp[i] = Math.max(dp[i-1],nums[i-1])-1;
if(dp[i]<0) return false;
}
return dp[len-1]>=0;
}
}
方法二:
贪心,每个位置所能到达的最大位置
class Solution {
public boolean canJump(int[] nums) {
int reach = 0;
for(int i=0;i<nums.length;i++){
if(reach<i || reach>=nums.length-1) break;
if(reach<nums[i]+i){
reach = nums[i]+i;
}
}
return reach>=nums.length-1;
}
}