LeetCode 55 跳跃游戏

LeetCode 55 跳跃游戏_第1张图片

假如当前大小为3 可以选择跳1步 2步 或者 3步

使用贪心算法:

for (int i = 0; i <= coverRange; i++) {
            coverRange = Math.max(coverRange, i + nums[i]);
            if (coverRange >= nums.length - 1) {
                return true;
            }
        }

循环的过程就是模拟  跳 1 步 到 最大步数

每跳一步就选择下一步跳的最远方案

class Solution {
    public boolean canJump(int[] nums) {
        if (nums.length == 1) {
            return true;
        }
        //覆盖范围, 初始覆盖范围应该是0,因为下面的迭代是从下标0开始的
        int coverRange = 0;
        //在覆盖范围内更新最大的覆盖范围
        for (int i = 0; i <= coverRange; i++) {
            coverRange = Math.max(coverRange, i + nums[i]);
            if (coverRange >= nums.length - 1) {
                return true;
            }
        }
        return false;
    }
}

你可能感兴趣的:(leetcode,数据结构,java,算法)