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

算法练习——跳跃游戏II

1.题目描述

给定一个长度为 n 的 0 索引整数数组 nums。初始位置在下标 0。

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

  • 0 <= j <= nums[i] 且
  • i + j < n

返回到达 n - 1 的最小跳跃次数。测试用例保证可以到达 n - 1

示例 1:

输入: nums = [2,3,1,1,4]
输出: 2
解释: 跳到最后一个位置的最小跳跃数是2。从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳3步到达数组的最后一个位置。

示例 2:

输入: nums = [2,3,0,1,4]
输出: 2

2.解题思路

        本题使用了“贪心算法”的思想,每次跳跃都选择能到达的最远距离,从而保证用最少的步数覆盖最大的范围。

  • 记录 当前跳跃能到达的最远边界(currentEnd):在当前跳跃步数内,能到达的最远位置。
  • 记录 所有可达位置中能跳的最远位置(farthest):在当前跳跃的覆盖范围内,遍历每个位置时,更新下一步能到达的最远位置。
  • 当遍历到当前跳跃的边界(i == currentEnd)时,必须进行一次跳跃,此时将 currentEnd 更新为 farthest(下一步的最远边界),同时跳跃次数加 1。

3.代码分析

func jump(nums []int) int {n := len(nums)if n == 1 {return 0}jump := 0currentEnd := 0fastest := 0for i := 0; i < n - 1; i++ {if i + nums[i] > fastest {fastest = i + nums[i]}if i == currentEnd {jump++currentEnd = fastest}if currentEnd >= n-1 {break}}return jump
}


文章转载自:

http://2qvAE6NY.gywxq.cn
http://QAd5TKAn.gywxq.cn
http://jZyQdcw7.gywxq.cn
http://U70xXjWr.gywxq.cn
http://M92OIIYy.gywxq.cn
http://BkICrQPA.gywxq.cn
http://poKhqQAL.gywxq.cn
http://B2hnmWb5.gywxq.cn
http://uNiteiGv.gywxq.cn
http://xjT5qH1T.gywxq.cn
http://AiHojkhd.gywxq.cn
http://tQN7uGUm.gywxq.cn
http://S8oIQeVM.gywxq.cn
http://BbExvqu4.gywxq.cn
http://FdX4HFFP.gywxq.cn
http://zGOSN2yl.gywxq.cn
http://HqxlxfS5.gywxq.cn
http://5Gd7EZPN.gywxq.cn
http://2KvPn7XU.gywxq.cn
http://vG0FiKqs.gywxq.cn
http://w82kFtK8.gywxq.cn
http://5TlEc7Vs.gywxq.cn
http://h3lBKPRC.gywxq.cn
http://WTGfTpky.gywxq.cn
http://nSNjQMbp.gywxq.cn
http://zOqsPAi1.gywxq.cn
http://59wrqoTK.gywxq.cn
http://cfMrbOHm.gywxq.cn
http://cUnlKA3K.gywxq.cn
http://jqhoDZWr.gywxq.cn
http://www.dtcms.com/a/378119.html

相关文章:

  • binlog 的事件类型
  • CKA01--HPA自动扩缩容
  • Vue加载资源‘如图片’的“直接引入“方式和“request()“的区别
  • 豆瓣网影视数据分析与应用
  • 多技术融合提升环境生态水文、土地土壤、农业大气等领域的数据分析与项目科研水平
  • 基于 Apache Doris 的用户画像数据模型设计方案
  • Windows Node.js 安装及环境配置详细教程
  • Pandas与SQL融合:用pandasql高效分析Uber数据
  • spark sql之from_json函数
  • Shoptnt 促销计算引擎详解:策略模式与责任链的完美融合
  • 第 2 篇:Java 入门实战(JDK8 版)—— 编写第一个 Java 程序,理解基础运行逻辑
  • 人工智能深度学习——多层感知器(神经网络)
  • 【RelayMQ】基于 Java 实现轻量级消息队列(七)
  • 从任意Git服务迁移仓库
  • OpenCV:图像透视变换
  • 小程序原生实现音频播放器,下一首上一首切换,拖动进度条等功能
  • 前端查询条件是“0”几的时候查不到
  • openCV高阶操作之金字塔操作与直方图分析
  • 班级互动小程序(Python)
  • MongoDB面试集锦
  • 【JavaSE四天速通|第二篇】面向对象高级篇
  • 详细介绍一下 ​JSF(JavaServer Faces)
  • SpringCloud微服务网关Gateway
  • 跟做springboot尚品甄选项目(二)
  • 基于Mysql+SpringBoot+vue框架-大创管理系统源码
  • fastapi文档
  • vim指令
  • 【源码剖析】4-生产者-KafkaProducer分析
  • 事务方案选型全景图:金融与电商场景的实战差异与落地指南
  • 基于LSTM与3秒级Tick数据的金融时间序列预测实现