LeetCode-55-跳跃游戏-贪心

题目描述:
给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。
判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。

解题思路:换个方向,不纠结具体跳几步,而是关注覆盖范围,当可以跳跃的覆盖范围等于数组的长度或者下标的最大值,说明就可以到达最后一个下标。
注释中有详解~

代码实现

class Solution {
    public boolean canJump(int[] nums) {
        int index = nums.length-1;
        if (index==0){// 表示只有一个元素
            return true;
        }
        int range = 0;// 初始化 range为0,表示目前覆盖的是0
        for (int i = 0; i <= range; i++) {// 注意!!!覆盖范围为 range,不是len
            range = Math.max(i + nums[i], range);// 找到当前覆盖范围里的最大的覆盖范围
            if (range >= index){// 注意是 index ,不需要-1,因为前面已经减过1了,已经表示下标了
                return true;
            }
        }
        return false;
    }
}

你可能感兴趣的:(LeetCode,leetcode,贪心算法)