【贪心】LeetCode 45. 跳跃游戏 II

发布时间 2023-04-03 10:52:50作者: Frodo1124

题目链接

45. 跳跃游戏 II

思路

  1. 如果某一个作为 起跳点 的格子可以跳跃的距离是 3,那么表示后面 3 个格子都可以作为 起跳点。 11. 可以对每一个能作为 起跳点 的格子都尝试跳一次,把 能跳到最远的距离 不断更新。

  2. 如果从这个 起跳点 起跳叫做第 1 次 跳跃,那么从后面 3 个格子起跳 都 可以叫做第 2 次 跳跃。

  3. 所以,当一次 跳跃 结束时,从下一个格子开始,到现在 能跳到最远的距离,都 是下一次 跳跃 的 起跳点。 31. 对每一次 跳跃 用 for 循环来模拟。

    • 跳完一次之后,更新下一次 起跳点 的范围。
    • 在新的范围内跳,更新 能跳到最远的距离。
  4. 记录 跳跃 次数,如果跳到了终点,就得到了结果。

作者:Ikaruga
链接:https://leetcode.cn/problems/jump-game-ii/solutions/36035/45-by-ikaruga/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

代码

class Solution {
    public int jump(int[] nums) {
        int result = 0;
        int end = 0;
        int maxPos = 0;

        for(int i = 0; i < nums.length - 1; i++){
            maxPos = Math.max(maxPos, nums[i] + i);
            if(i == end){
                end = maxPos;
                result++;
            }
        }

        return result;
    }
}