当前位置: 首页 > article >正文

力扣45-跳跃游戏II (java详细题解)

题目链接:45. 跳跃游戏 II - 力扣(LeetCode)

前情提要:

建议大家在做本题前先将力扣55-跳跃游戏先做了,具体题解在这 力扣55-跳跃游戏(java详细题解)-CSDN博客。

因为本人最近都来刷贪心类的题目所以该题就默认用贪心方法来做。

贪心方法:局部最优推出全局最优。

如果一个题你觉得可以用局部最优推出全局最优,并且没有反例来反驳的话就可以用贪心来试试。

题目思路:

本题相对于力扣45要难上不少,因为本题是求到达最后一个元素的最小跳跃次数。

大家肯定也会纠结,第一步怎么跳,第二步怎么跳。

与其纠结于每一步怎么跳,我们可以换一个维度。其实跟力扣45一个思路,用每一步的覆盖范围来做。

本题的关键:以最小的步数增加覆盖范围,一旦覆盖范围到了终点那么直接返回步数。

但跟力扣45不同的是,这里我们要维护俩个覆盖范围,一个是当前这一步的最大覆盖范围,另一个是下一步的最大覆盖范围。

在这里插入图片描述

关键思路:当遍历到本步所能到的最大覆盖范围后,还没有到达最终点,此时我们就不得不走下一步,走一下步时,我们更新本步的最大覆盖范围,如果覆盖范围超过终点,则直接返回步数,该步数就是最小的步数。

最终代码:

class Solution {
    public int jump(int[] nums) {
        //该题的关键就是 以最小的步数增加覆盖范围 一旦覆盖范围到了终点那么直接返回步数
        //本题就是要维护俩个范围 一个是当前这一步最大覆盖范围 另一个就是下一步的最大覆盖范围
        //只要我遍历的元素到了我当前这一步的最大范围 还没有到终点 就直接将步数加一 因为我还要跳下一步才可能到达终点
        //当前最大覆盖范围
        int currange = 0;
        //下一步的最大覆盖范围
        int nextrange = 0;
        //记录的结果
        int result = 0;
        //当数组的数量为1,那么直接返回0
        if(nums.length == 1)return 0;
        for(int i = 0;i < nums.length;i ++){
           nextrange = Math.max(i + nums[i],nextrange);
           if(currange == i){
            //只要我遍历的元素到了我当前的最大覆盖范围 而且没有到达终点 步数就加一
            if(currange != nums.length - 1){
                result ++;
                //更新我这一步能到的最大覆盖范围
                currange = nextrange;
                //此时如果现在这一步已经超过终点的话 就可以直接结束循环了
                if(currange >= nums.length - 1){
                break;
              }
            }
           }
        }
        return result;
    }
}

这一篇博客就到这了,如果你有什么疑问和想法可以打在评论区,或者私信我。

我很乐意为你解答。那么我们下篇再见!


http://www.kler.cn/a/289672.html

相关文章:

  • Go语言 实现将中文转化为拼音
  • 深度学习中的感受野:从基础概念到多层次特征提取
  • 响应式网页设计--html
  • JSON-RPC-CXX深度解析:C++中的远程调用利器
  • K8资源之endpoint资源EP资源
  • flink sql + kafka + mysql 如何构建实时数仓
  • 图文解析保姆级教程: IDEA里面创建SpringBoot工程、SpringBoot项目的运行和测试、实现浏览器返回字符串
  • git查看代码提交记录
  • 【C++题解】1002 - 编程求解1+2+3+...+n
  • 【系统架构设计师】论文:论面向服务的架构设计及其应用
  • Vue3其他Api
  • 2024.9.3 Python,二分查找解决在D天内送达包裹的能力,dfs二叉树的层平均值,动态规划二分查找贪心算法解决最长增长子序列和马戏团人塔
  • 第66期 | GPTSecurity周报
  • 无线信道中ph和ph^2的场景
  • gitee 简单使用
  • Storm AI : 最佳长文写作工具
  • 精准设计与高效开发:用六西格玛设计DFSS实现新能源汽车开发突破
  • 解除本地Git仓库与远程仓库关联
  • 【系统架构设计师-2021年】综合知识-答案及详解
  • 卷积神经网络(Datawhale X 李宏毅苹果书AI夏令营)
  • 宝贝甜梦秘籍!康姿百德柔压磁性枕豪华款守护成长每一夜
  • 车辆违停智能监测摄像头
  • 【maxcompute|ODPS|SQL|HSQL】日期数据非标准日期格式(yyyy/M/d),如何转为yyyy-MM-dd HH:mm:ss标准格式
  • ArcGIS Pro SDK (十二)布局 8 布局元素选择和更改
  • 【K8s】专题十三:Kubernetes 容器运行时之 Docker 与 Containerd 详解
  • Vue2的学习1