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

力扣HOT100之贪心算法:45. 跳跃游戏 II


这道题刷代码随想录的时候也刷过,本来以为有了上一题55.跳跃游戏的基础,这道题会好做一点,但是依旧想不出来思路,回去看了下自己当时写的博客,没想到今天的感受和当时的感受都一模一样。。。What can I say?看了下代码随想录的视频和灵神的题解,终于把这个问题彻底弄清楚了。
由于这道题保证一定能跳到终点,所以我们只需要考虑如何花最少的次数跳到终点,这里我们定义resultcurrentnext三个变量,result用于记录最小跳跃次数,current代表本次跳跃后所能达到的覆盖范围的最远边界,next代表下一次跳跃所能达到的最远覆盖范围,然后用一个for循环来遍历nums的元素,当我们遍历到current处,则说明我们已经达到了当前覆盖范围的边界,我们需要先判断是否已经到达数组的边界,如果还没到达,则当前是已经到达覆盖范围边界但是尚未达到数组的边界。我们必须跳跃一次,并将current移动到下一次跳跃后的覆盖范围的边界,即current = next;result++;;当进入下一轮for循环时,则i进入下次跳跃的覆盖范围,我们再不断地更新下下次跳跃的最远覆盖范围,即next = max(next, i + nums[i]);。如果i已经到达了数组边界,则无需进行下一次跳跃,直接退出循环即可。

class Solution {
public:int jump(vector<int>& nums) {int current = 0;  //记录当前所在的位置int result = 0;   //记录最小次数int next = 0;for(int i = 0; i < nums.size(); i++){next = max(next, i + nums[i]);   //更新最大覆盖范围if(i == current){  //已经到达覆盖范围边界,需要进行一次跳跃,直接跳到下一个最大覆盖范围的边界if(i != nums.size() - 1){  //已经到达覆盖范围边界但是尚未达到数组的边界result++;current = next;}}}return result;}
};

相关文章:

  • 3 Studying《深入理解Android卷(邓凡平)》2
  • 考试中关于机动车安全技术检验标准(如 GB 7258、GB 21861 等)的考核重点有哪些?
  • 物联网配置记录
  • 鸿蒙开发-封装一个顶部标题栏
  • FastAPI系列20:fastapi-amis-admin,即开即用的后台框架(2)
  • BUG调试案例十四:TL431/TL432电路发热问题案例
  • SLAM3R:基于单目视频的实时密集3D场景重建
  • UE5 学习系列(六)导入资产包
  • Pandas:让数据起舞的Python魔法手册
  • SQL进阶之旅 Day 25:高并发环境下的SQL优化
  • 基于 WebWorker 的 WebAssembly 图像处理吞吐量分析
  • 深入理解TCP以及三次握手与四次挥手
  • Kotlin 中的 Object
  • [Java恶补day22] 240. 搜索二维矩阵Ⅱ
  • 1.SDH概述、STM-N帧结构
  • 【Dv3Admin】系统视图用户登录API文件解析
  • zset类型
  • leetcode1584. 连接所有点的最小费用-medium
  • 【数据分析】RNA-seq 数据分析:差异表达、火山图与功能富集分析
  • 常见系统设计
  • 满屏滚动网站咋做/google框架三件套
  • 学做网站设计/北京外包seo公司
  • 网站怎么做任务赚钱吗/网络营销的概念和特点
  • 一个网站专门做摩托车/培训心得体会万能模板
  • tp5手机网站开发/郑州网络推广代理顾问
  • 网站模糊背景/新闻发布稿