lotus

贵有恒何必三更眠五更起 最无益只怕一日曝十日寒

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

1. 题目

 读题

https://leetcode.cn/problems/jump-game/

考查点

这道题主要考查的是贪心算法的应用,

  • 即在每一步选择最优的局部解,从而达到全局最优的目的。
  • 贪心算法通常用于解决一些最优化问题,如最小生成树、单源最短路径、任务调度等。
  • 2. 解法

思路

一个可能的解决方案是使用贪心算法,即每次选择能跳到最远的位置。具体步骤如下:

  • 初始化一个变量maxReach,表示当前能跳到的最远位置,初始值为0。
  • 遍历数组中的每个元素,对于每个元素i,更新maxReach为max(maxReach, i + nums[i]),即当前位置加上能跳的长度和之前的最远位置中的较大值。
  • 如果maxReach >= nums.length - 1,说明能够到达最后一个下标,返回true。
  • 如果i > maxReach,说明当前位置已经超过了能跳到的最远位置,无法继续前进,返回false。

具体实现

class Solution {
    public boolean canJump(int[] nums) {
        int maxReach = 0; //当前能跳到的最远位置
        for (int i = 0; i < nums.length; i++) {
            if (maxReach >= nums.length - 1) return true; //能够到达最后一个下标
            if (i > maxReach) return false; //当前位置超过了能跳到的最远位置
            maxReach = Math.max(maxReach, i + nums[i]); //更新最远位置
        }
        return false;
    }
}

  

3. 总结

posted on 2023-04-29 23:18  白露~  阅读(8)  评论(0编辑  收藏  举报