跳跃游戏 II (贪心, 动态规划)

  • 题目描述(力扣45题) :

    • 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]

      每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i + j] 处:

    • 0 <= j <= nums[i] 
    • i + j < n
    • 返回到达 nums[n - 1] 的最小跳跃次数。生成的测试用例可以到达 nums[n - 1]

  

  • 解题思路:

    • 以[2, 3, 1, 1, 4] 为例
    • 首先从 0 索引位置出发,  可以跳到 1, 2 索引
    •  
    •  1 索引的 3 刚好可以到达最后一个位置的4, 二 2 索引的1 只能到达 3 索引的 1, 所以选择从 1 索引的 3 跳跃, 一共跳两次, 返回 2
  • 简单来说, 就是在本次的跳跃范围以内, 找出下次跳跃距离最远的那一个索引(位置).

  • 解题步骤: 

  • int length = nums.length; 获取数组的长度,用于控制循环范围。

  • int end = 0; 这个变量记录了当前跳跃的范围的最远位置。

  • int maxPosition = 0; 这个变量记录了当前跳跃范围内能够到达的最远位置。

  • int steps = 0; 这个变量记录了跳跃的步数。

  • for (int i = 0; i < length - 1; i++) {这是一个循环,从数组的第一个位置开始,遍历到倒数第二个位置。因为在循环中会访问 nums[i+1],所以循环的终止条件是 i < length - 1

  • maxPosition = Math.max(maxPosition, i + nums[i]);更新当前跳跃范围内能够到达的最远位置。i + nums[i] 表示从当前位置能够跳跃到的最远位置,通过 Math.max 来更新 maxPosition

  • if (i == end) {如果当前位置 i 达到了之前记录的跳跃范围的最远位置 end,说明需要进行下一次跳跃了。

  • 以下是代码实现: 

    • class Solution {
          public int jump(int[] nums) {
              int end = 0;
              int maxLocal = 0;
              int step = 0;
              for(int i = 0; i <= end && end < nums.length - 1; i++) {
                  maxLocal = Math.max(maxLocal, i + nums[i]);
                  if(i == end) {
                      end = maxLocal;
                      step++;
                  }
              }
      
              return step;
          }
      }

       

    •                                     以上是本篇文章的全部内容, 感谢观看

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/565565.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于 TLE9879EvalKit 使用 Micro Inspector Pro

文章目录 1.前言2.环境准备3.DataScreen 功能3.1 例程准备3.2 测试仪表板功能 4.Oscilloscope 功能4.1 例程准备4.2 测试示波器功能 5.对比 FreeMaster6.推荐阅读 1.前言 之前参加 Infenion 的 2023 年双 11 活动&#xff0c;领取了一块 TLE9879 的开发版TLE9879 EvalKit&…

哈希表详解

目录 1.unordered系列关联式容器 2.哈希 3.unordered_map和unordered_set哈希实现 4.代码总和 1.unordered系列关联式容器 1.1unordered系列 c98的STL里面提供了底层为红黑树的关联式容器(set和map); 但是在结点数目很多的时候查询的效率就低了, 所以c11里STL又提供了四个…

mysql基础14——视图

视图 视图是一种虚拟表 可以把一段查询语句作为视图存储在数据库中 需要的时候把视图看作一个表&#xff0c;对里面的数据进行查询 视图并没有真正存储数据 避免了数据存储过程中可能产生的冗余 提高了存储的效率 子查询 嵌套在另一个查询中的查询 派生表 如果在查询中…

Java中的super

package day33; ​ public class Person {public String name;public int age; ​public Person() {System.out.println("调用了父类的无参构造");} } ​ package day33; ​ public class teacher extends Person{public teacher() {System.out.println("调用了…

Springboot+Vue项目-基于Java+MySQL的在线文档管理系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

单机单实例部署Kafka及测试

文章目录 部署Docker 测试启动测试创建Topic生产者消费者 集成Manager的部署dockerfile效果 参考资料 在我们做和kafka开发相关的工作时&#xff0c;往往希望独立部署一套kafka测试环境。而kafka部署时&#xff0c;不能只是简单安装kafka自身组件&#xff0c;还要安装zookeeper…

你准备好迎接它了吗?英伟达CEO黄仁勋预言:人形机器人将成为未来主流

在近日举行的“CadenceLIVE 硅谷 2024”大会上&#xff0c;英伟达公司的首席执行官黄仁勋与大会主办方Cadence公司的CEO进行了一场富有深度的对话。在这场引人瞩目的交流中&#xff0c;黄仁勋大胆预测&#xff0c;未来人形机器人将成为主流&#xff0c;引领科技发展的新潮流。 …

n!的位数:面向对象的解法

Description:针对每个非负整数n&#xff0c;计算其n!的位数。 Input:输入数据中含有一些整数n(0≤n<10^7)。 Output:根据每个整数n&#xff0c;输出其n!的位数&#xff0c;每个数占独立一行。Output:重新排列01串的顺序。使得串按基本描述的方式排序。 #include <iostr…

MATLAB——M文件

M文件 MATLAB允许编写两种程序文件- 脚本−脚本文件是扩展名为.m的程序文件。在这些文件中&#xff0c;您编写了一系列要一起执行的命令。脚本不接受输入&#xff0c;也不返回任何输出。它们对工作区中的数据进行操作。 函数−函数文件也是扩展名为.m的程序文件。函数可以接…

数图可视化品类空间管理系统入编《零售门店数字化赋能专项报告(2024年)》

数图可视化品类空间管理系统荣幸入编中国连锁经营协会发布的 《零售门店数字化赋能专项报告&#xff08;2024年&#xff09;》&#xff0c;报告以零售门店为切入点&#xff0c;通过引入“5P”的技术框架及梳理业内配套最佳实践方案&#xff0c;理出一套科学的、完整的零售门店数…

未来城市可视化,A3D引擎支持,免费搭建全新一代数字孪生!

AMRT3D数字孪生引擎https://www.amrt3d.com/#/ 什么是未来城市&#xff1f;它是新型数字化理念的载体&#xff0c;以数字孪生与物理世界城市的融合为核心&#xff0c;通过数字孪生技术在数字空间实时构建城市&#xff0c;采用数据整合和分析预测来实时模拟、预测、控制整体城市…

使用gdal均匀筛选点矢量

使用gdal均匀筛选点矢量 作用&#xff1a; 通过计算各点之间的欧式距离&#xff0c;筛选出符合目标的、均匀发布在空间中的N个数据点。 效果示意图 运行环境 python 3.10 安装&#xff1a;tqdm、numpy和tqdm这三个库 完整代码 import numpy as np from osgeo import ogr,…

星域社区原版APP源码/社区交友App源码/动态圈子群聊php源码

简介 初始版本是由RuleAPP规则之树开发的&#xff0c;而星域社区则是在此基础上进行了二次开发和美化。作者花了近一年的时间来打磨它&#xff0c;现在即将推出Pro版。如果你只想免费使用的话&#xff0c;可以使用原始的RuleAPP版本。但是&#xff0c;如果你想要获得更好的美观…

python3爬虫笔记2

1 urlpare模块 urlparse模块主要用于处理URL字符串&#xff0c;它的核心功能是将URL拆分为多个组成部分&#xff0c;并允许你通过名字属性或索引来访问这些部分。通过调用urlparse模块的相关函数&#xff0c;你可以轻松解析URL&#xff0c;获取其不同组件的信息&#xff0c;如…

究竟该怎么寄快递才能安全无误的送到手中呢?

最近&#xff0c;小编上班了发现有同事在吐槽快递送到手中的时间很晚了&#xff0c;比预计的时间差了很多&#xff0c;并且产品也有不同程度的损坏。这就让我们很是恼火了&#xff0c;但是细细研究后才发现有一部分的原因竟然是我们的原因才导致的寄快递出现了很多纰漏。 首先…

sql(ctfhub)

一.整数型注入 输入1 输入2 输入2-1&#xff0c;回显为1的结果&#xff0c;说明是数字型&#xff0c;只有数字型才可加减 判断字段数为2 查询数据库 查表 查列 显示flag内容 二.字符型注入 输入1 输入2 输入2-1&#xff0c;说明为字符型&#xff0c;不是数字型 判断闭合方式为…

MyBatis 框架学习(I)

MyBatis 框架学习(I) 文章目录 MyBatis 框架学习(I)1. 介绍2. 准备&测试3. MyBatis 注解基础操作3.1 日志输出3.2 Insert 操作3.3 Delete 操作3.4 Update 操作3.5 Select 操作 总结 1. 介绍 之前我们学习过利用JDBC操作数据库进行项目开发&#xff0c;但我们发现它操作起来…

mysql基础19——日志

日志 mysql的日志种类非常多 通用查询日志 慢查询日志 错误日志 与时间有关联 二进制日志 中继日志 与主从服务器的同步有关 重做日志 回滚日志 与数据丢失有关 通用查询日志 记录了所有用户的连接开始时间和截至时间 以及给mysql服务器发送的所有指令 当数据异常时&…

Skill Check: Build an LLM Application using OCI Generative AI Service

Skill Check: Build an LLM Application using OCI Generative AI Service

Oracle21C 引入HR实例(linux)

1、下载资源 https://github.com/oracle-samples/db-sample-schemas点击code&#xff08;代码&#xff09;下载 2、上传Sql文件 解压之后将human_resources里的文件复制到demo\schema\目录&#xff08;具体目录前面的路径是你安装的路径&#xff09;下&#xff0c;如下图 3、…