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

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]。
示例 1:

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

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

解题思路

解题思路:贪心算法,每一步尽可能增加覆盖范围。记录下一次跳跃的最大步数,每次到达覆盖范围末尾就进行下一次跳跃。同时统计跳跃的次数。
时间复杂度:O(n),空间复杂度:O(1)

代码

class Solution {public int jump(int[] nums) {// 1. result记录跳跃次数,cover记录覆盖范围,next记录下一次的最大跳跃步数int result = 0;int cover = 0;int next = 0;// 2. 遍历数组for(int i = 0; i < nums.length; i++){// 3.记录下一次跳跃的最大步数next = Math.max(next, nums[i] + i);// 4.如果遍历到当前覆盖范围的末尾if(i == cover){// 4.1 如果覆盖范围不是数组末尾,就再次跳跃,并且更新覆盖范围if(cover != nums.length - 1){result++;cover = next;}// 4.2 如果覆盖范围包含终点位置,就退出if(cover >= nums.length - 1){break;}}}return result;}
}
http://www.xdnf.cn/news/5788.html

相关文章:

  • JavaScript双问号操作符(??)详解,解决使用 || 时因类型转换带来的问题
  • 消息队列RocketMQ-docker部署保姆级教程(从0到1)(2)
  • 16.three官方示例+编辑器+AI快速学习webgl_buffergeometry_lines_indexed
  • apt 软件源与 Docker 镜像源
  • Westlake-Omni 情感端音频生成式输出模型
  • 软考高分备考秘籍:综合知识、案例分析、论文全攻略
  • 如何使用VBA宏高效操作Word文档中的表格(对齐与样式)
  • 六、STM32 HAL库回调机制详解:从设计原理到实战应用
  • nginx-整合modsecurity做waf
  • Ubuntu 22初始配置(root、ssh)
  • 航电系统之电传飞行控制系统篇
  • IDR方程迭代求解算法介绍与比较
  • Ollama+OpenWebUI+docker完整版部署,附带软件下载链接,配置+中文汉化+docker源,适合内网部署,可以局域网使用
  • Java 线程的堆栈跟踪信息
  • 《Python星球日记》 第62天:图像方向综合项目(猫狗分类)
  • Java自动化测试
  • 2025年5月13日 奇门遁甲与股市
  • 学习笔记:黑马程序员JavaWeb开发教程(2025.4.3)
  • 麒麟 v10 卸载podman
  • 【大模型MCP协议】MCP官方文档(Model Context Protocol)一、开始——1. 介绍
  • pythonocc 拉伸特征
  • C语言 第六章 结构体(3)
  • 0前言(文章体系)
  • 数字滤波器应用介绍
  • 流体力学绪论(期末复习)
  • 【android bluetooth 框架分析 02】【Module详解 13】【CounterMetrics 模块介绍】
  • 继承关系下创建对象的具体流程
  • 生活破破烂烂,AI 缝缝补补(附提示词)
  • 进程间的通信
  • python-75-Nacos技术之Python+Nacos实现微服务架构