[LeetCode] 55. 跳跃游戏

有想到用从最后一位开始计算,然后分别比较,但是没想到可以一直更新最后一个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;
    }
}

 

posted @ 2020-04-17 23:16  doyi  阅读(80)  评论(0编辑  收藏  举报