有想到用从最后一位开始计算,然后分别比较,但是没想到可以一直更新最后一个i的位置
public class Solution { public boolean canJump(int[] nums) { int lastPos = nums.length - 1; for (int i = nums.length - 1; i >= 0; i--) { if (i + nums[i] >= lastPos) { lastPos = i; } } return lastPos == 0; } }
还有另外一种方法,直接计算,依次更新能到达的最新位置
class Solution { public boolean canJump(int[] nums) { int k=0; for(int i=0;i<nums.length;i++){ if(i>k) return false; k=Math.max(k,i+nums[i]); } return true; } }