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

跳跃游戏 II | 贪心算法最优解(最少跳跃次数)

跳跃游戏 II | 贪心算法最优解(最少跳跃次数)

题目描述

给定一个长度为n的 0 索引整数数组nums,初始位置为数组下标 0。数组中每个元素nums[i]表示从下标i处可以向前跳跃的最大长度,即若处于索引i,可跳跃到任意满足i < j < nj ≤ i + nums[i]的索引j。要求返回到达数组最后一个下标n-1最小跳跃次数,题目保证一定可以到达最后一个下标。

核心特征分析

  1. 数组类问题的算法选择优先级:贪心算法 > 动态规划(尤其当问题仅需“最优结果”而非“所有路径”时);
  2. 本题中“每个元素代表可跳跃的最大长度”是贪心算法的典型适配场景——无需记录所有跳跃路径,只需通过“局部最优选择”即可推导“全局最优解”(最少跳跃次数)。

算法选择与思路

算法选择

选择贪心算法作为最优解,核心原因如下:

  • 动态规划需维护数组记录每个位置的最少步数,时间复杂度O ( n 2 ) O(n^2)O(n2)、空间复杂度O ( n ) O(n)O(n),效率较低;
  • 贪心算法仅需常数级变量记录关键状态,时间复杂度O ( n ) O(n)O(n)、空间复杂度O ( 1 ) O(1)O(1),且能直接推导最少跳跃次数,是本题的最优解法。

贪心算法核心思路

关键变量定义
  • step:记录已完成的跳跃次数;
  • current:当前跳跃范围内能到达的最远边界(即本次跳跃的“终点”);
  • max_length:遍历过程中能到达的全局最远索引(所有可达位置中能跳的最远位置)。
算法执行步骤
  1. 初始化step = 0current = 0max_length = 0(补充边界处理:若数组长度≤1,无需跳跃,直接返回0);
  2. 遍历数组中的每个索引i
    • 刷新全局最远可达索引:max_length = max(max_length, i + nums[i])
    • i == current(遍历到当前跳跃的边界),说明必须完成一次跳跃:
      ① 跳跃次数加1:step++
      ② 更新下一次跳跃的边界:current = max_length
    • current ≥ n-1(当前边界已覆盖最后一个下标),提前终止遍历(无需继续计算);
  3. 遍历结束后返回step

完整解题代码

classSolution{public:intjump(vector<int>&nums){intn=nums.size();// 边界处理:数组长度≤1时,初始位置即为终点,无需跳跃if(n<=1)return0;intstep=0;// 最少跳跃次数intcurrent=0;// 当前跳跃的最远边界intmax_length=0;// 全局能到达的最远索引for(inti=0;i<n;i++){// 更新全局最远可达位置max_length=max(max_length,i+nums[i]);// 到达当前跳跃边界,必须完成一次跳跃if(current==i){step++;current=max_length;}// 提前终止:已能到达最后一个下标,无需继续遍历if(current>=n-1)break;}returnstep;}};

复杂度分析

  • 时间复杂度O ( n ) O(n)O(n)。仅需遍历一次数组,n为数组长度,遍历过程中所有操作均为常数级;
  • 空间复杂度O ( 1 ) O(1)O(1)。仅使用stepcurrentmax_length三个常数级变量,无额外空间开销。

总结

  1. 贪心算法解决“跳跃游戏 II”的核心是以“当前跳跃边界”为触发条件,每到边界就完成一次跳跃,并将下一次边界更新为全局最远可达位置;
  2. 该解法通过“局部最优(每次跳最远)”实现“全局最优(最少次数)”,时间/空间复杂度均为最优;
  3. 边界场景处理(如数组长度≤1)是保证代码健壮性的关键,需结合题目条件补充。
http://www.jsqmd.com/news/316805/

相关文章:

  • 深入剖析CVE-2025-20354:思科CCX系统高危RCE漏洞详解
  • AI生成测试用例的全面性优势:技术机理与实践验证
  • 我让AI读了1000个测试用例,总结出“好用例”的5个特征
  • 写论文软件哪个好?实测 10 款工具后,虎贲等考 AI 凭 “全流程闭环” 稳赢
  • 10个技巧:用AI自动生成测试报告
  • 【收藏必学】大模型技术全解析:从入门到实践的人工智能核心指南
  • 2026可靠伦茨减速机优质厂家推荐榜:伦茨制动器、伦茨变频器、伦茨控制器、伦茨直流调速器、伦茨维修、伦茨驱动器选择指南
  • 常州市英语雅思培训机构推荐,2026权威测评出国雅思辅导机构口碑榜单.
  • 终极预测:2030年,AI将自动编写测试用例?
  • 实时AI监控测试实战:从理论到落地的全面指南
  • AI创作避坑 学术党实测有效,免费搞定查重+绘图+改稿
  • 震惊!这3个VS Code插件让调试快如闪电:软件测试从业者的效率革命
  • 2026年趋势:开发者必学的联邦学习测试
  • 硬盘数据损坏分析
  • 9999999
  • 打造半导体行业培训新视野:3D动画助力固晶机应用解析
  • 【图像加密】基于 DCT 变换的图像加密与解密附matlab代码
  • 收藏必看!告别RAG碎片化:一文讲透Forms-Dynamics框架下的Agent记忆系统
  • 收藏!2026年AI行业最大机会,锁定应用层赛道
  • 收藏!Java程序员转行大模型开发:从入门到落地的完整指南
  • 何洁月 C++教程 初学者编程入门视频讲解
  • 管理信息系统第一次作业指南与在线完成技巧
  • 华师在线作业系统2026使用指南:功能详解与高效提交技巧
  • 零基础C语言教程视频推荐,哪个好?
  • 2026Deepseek 知识库部署服务实力榜单:经验丰富的专业实施服务商推荐
  • 2026年全国设备搬运公司哪家强?多家厂家优势对比 特色服务拆解
  • Flutter艺术探索-MethodChannel原理:Flutter与原生通信机制
  • 一站式BI私有化部署服务提供商推荐2026 本地部署厂商与智能BI方案商全收录
  • ‌AI生成测试用例的“可执行性”难题:它写的你能跑吗?
  • 常州市英语雅思培训机构推荐,2026权威测评出国雅思辅导机构口碑榜单