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

力扣hot100:跳跃游戏||

题目描述:

思路分析:

本题依旧是贪心思想,通过局部最优找全局最优。

本题局部最优就是在当前可到达范围内选择能跳的更远的那个点,通过不断选择范围内能跳的最远的点来获得全局的最少跳跃次数。

整体过程从数组起点开始向前遍历,用一次遍历来模拟跳跃过程。遍历过程中,始终维护两个关键信息:当前这一步能够到达的最远位置(end),以及在当前范围内,下一步能够到达的最远位置(maxpos)

在遍历到每一个位置时,都会尝试利用该位置的跳跃能力,去更新“下一步最远能到达的位置”。这样可以保证,在不增加跳跃次数的前提下,尽可能扩大下一次跳跃的覆盖范围。

当遍历位置到达当前这一步的最远边界时,说明这一跳所能利用的所有位置已经全部考虑完毕,此时必须进行一次新的跳跃。跳跃次数加一,同时将当前可达范围更新为之前计算好的下一步最远位置,继续向前推进。

通过这种方式,每一次跳跃都不是立即决定跳到哪个具体位置,而是先在当前范围内进行“最优扩展”,等到必须跳的时候,再统一更新范围并计数。不断重复这一过程,最终覆盖到数组的最后一个位置,从而得到最少的跳跃次数。

代码:

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

为什么循环条件是i < len - 1?

因为代码在遍历过程中一旦到达当前可达边界就会统计一次跳跃,而当已经到达数组最后一个位置时,实际上不需要再进行任何跳跃,如果循环遍历到len - 1,就有可能在终点位置多计算一次跳跃次数。因此只遍历到len - 2,也就是使用i < len - 1,可以保证只在“还需要继续向前推进”的情况下才统计跳跃次数,避免结果偏大。

http://www.cnnetsun.cn/news/738183.html

相关文章:

  • Packmol分子动力学模拟初始配置构建工具完整指南
  • ESP32开发环境配置深度解析:从安装失败到完美运行的终极解决方案
  • 视频字幕自动生成+情感标注?SenseVoiceSmall创新应用案例
  • Lucky Draw抽奖系统:三分钟打造专业级抽奖体验
  • 手机摄像头秒变专业直播设备:DroidCam OBS插件终极指南
  • 手机直播终极解决方案:DroidCam让你轻松拥有高清摄像头
  • 深度测评8个AI论文软件,助继续教育学生轻松搞定论文写作!
  • ET框架:重构Unity游戏服务器架构的终极方案
  • Windows资源管理器HEIC缩略图神器:让iPhone照片一目了然![特殊字符]
  • Arduino ESP32完整安装指南:3步快速解决常见问题
  • Downkyi全能下载指南:3步轻松保存B站精彩视频
  • Qwen2.5性能优化:让CPU环境对话速度提升50%
  • 【计算机毕业设计案例】基于springboot的元宇宙平台上的消费扶贫专柜管理系统(程序+文档+讲解+定制)
  • Java毕设项目推荐-基于springboot房屋交易管理系统设计实现基于springboot的房产交易服务平台的设计与实现【附源码+文档,调试定制服务】
  • 升级GPEN镜像后,修复速度和画质双双提升
  • AUTOSAR中的软件更新(OTA)机制如何实现容错恢复?
  • springboot_ssm840雅乐私人牙科诊所管理系统的设计与实现ssm
  • Java计算机毕设之基于Java+springboot的医药管理系统(完整前后端代码+说明文档+LW,调试定制等)
  • 【毕业设计】基于springboot的医药管理系统(源码+文档+远程调试,全bao定制等)
  • 【课程设计/毕业设计】基于java+springboot+vue+mysql的房产交易租赁服务平台基于springboot的房产交易服务平台的设计与实现【附源码、数据库、万字文档】
  • Java计算机毕设之基于springboot的元宇宙平台上的消费扶贫专柜管理系统(完整前后端代码+说明文档+LW,调试定制等)
  • Java毕设项目:基于springboot的房产交易服务平台的设计与实现(源码+文档,讲解、调试运行,定制等)
  • 维普AI检测实测榜单:第一名不是你想的那个
  • 学校用维普检测,这6款降AI工具更稳
  • Tableau数据可视化:5个让老板眼前一亮的仪表盘案例
  • Java毕设选题推荐:基于springboot的元宇宙平台上的消费扶贫专柜管理系统【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 基于STM32智能门禁锁系统设计与实现
  • 用java实现简易计算器_java窗口简易计算器,零基础入门到精通,收藏这篇就够了
  • 知光项目用户资料模块
  • 维普AIGC检测太高怎么办?我用这6款工具成功降到合格线