leetcode hot100跳跃游戏Ⅱ

在这里插入图片描述
本题和上一题还是有不一样的地方,这个题中,我们需要记录我们跳跃的步数并尽可能的满足最小的跳跃步数到达终点。

那么我们还是采用覆盖范围的概念,但是我们需要两个,一个是在当前位置的覆盖范围,另一个是下一步的覆盖范围。

当我们位于当前位置,我们计算我们可以走到的最大覆盖范围,如果最大覆盖范围大于等于nums.length-1,也就是说我们在当前位置,再走一步,就可以到达数组的终点,那么此时直接步数加一,然后跳出循环即可。

如果我们当前位置,发现最大覆盖范围没有到达重点,那么我们应该继续往下走,往下走的时候,我们就需要计算,下一步无论是往后走几步,我们要找到下一步走完之后的最大覆盖范围,然后把这个值给当前的覆盖范围,然后步数加一,这样就说明,我们在步数加一的情况下,我们可以走到的最远距离!

本题和上一题不一样的点在于,上一个题我们只需要找最大的覆盖范围即可,所以我遍历的时候,是在覆盖范围内遍历,这个题是要找最小的步数,我们需要数组中每个元素都遍历,然后根据当前元素的值去改变最大覆盖范围,如果超过了数组的索引最大值,那么说明再走一步肯定能到最后(注意,可能不是从当前位置走的,可能是当前位置前一个位置,因为我们不关心走的路线,只关心最大范围!)。如果当前的最大范围和数组下标i相等了,说明我们当前走到的位置还到不了数组最后终点,还需要再往后走,然后我们往后走,那么最大覆盖范围肯定变化了,就把这个最大覆盖范围给当前覆盖范围,继续用i和当前覆盖范围比较!

class Solution {public int jump(int[] nums) {if (nums == null || nums.length == 0 || nums.length == 1) {return 0;}//记录跳跃的次数int count=0;//当前的覆盖最大区域int curDistance = 0;//最大的覆盖区域int maxDistance = 0;for (int i = 0; i < nums.length; i++) {//在可覆盖区域内更新最大的覆盖区域maxDistance = Math.max(maxDistance,i+nums[i]);//说明当前一步,再跳一步就到达了末尾if (maxDistance>=nums.length-1){count++;break;}//走到当前覆盖的最大区域时,更新下一步可达的最大区域if (i==curDistance){curDistance = maxDistance;count++;}}return count;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/440372.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【图像分割】【深度学习】Windows10下UNet代码Pytorch实现与源码讲解

【图像分割】【深度学习】Windows10下UNet代码Pytorch实现与源码讲解 提示:最近开始在【医学图像分割】方面进行研究,记录相关知识点,分享学习中遇到的问题已经解决的方法。 文章目录 【图像分割】【深度学习】Windows10下UNet代码Pytorch实现与源码讲解前言UNet模型运行环境搭…

阿里云幻兽帕鲁服务器4核16G配置报价

自建幻兽帕鲁服务器租用价格表&#xff0c;2024阿里云推出专属幻兽帕鲁Palworld游戏优惠服务器&#xff0c;配置分为4核16G和4核32G服务器&#xff0c;4核16G配置32.25元/1个月、10M带宽66.30元/1个月、4核32G配置113.24元/1个月&#xff0c;4核32G配置3个月339.72元。ECS云服务…

【开源】JAVA+Vue.js实现生活废品回收系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容三、界面展示3.1 登录注册3.2 资源类型&资源品类模块3.3 回收机构模块3.4 资源求购/出售/交易单模块3.5 客服咨询模块 四、免责说明 一、摘要 1.1 项目介绍 生活废品回收系统是可持续发展的解决方案&#xff0c;旨在鼓…

Docker 安装篇(Ubuntu)

图省事一般采用第一种 一、 直接采用apt安装 apt install docker.io查看 /usr/lib/systemd/system/docker.service ubuntu默认守护进程用的&#xff1a;fd:// ps -ef | grep docker root 775237 1 0 11:14 ? 00:01:07 /usr/bin/dockerd -H fd:// --cont…

linux -- 内存管理 -- SLAB分配器

SLAB分配器&#xff08;slab allocator&#xff09; SLAB分配器用于小内存空间管理&#xff0c;基本思想是&#xff1a;先利用页面分配器分配出单个或多个连续的物理页面&#xff0c;然后再此基础上将整块页面分割为多个相等的小内存单元&#xff0c;来满足小内存空间分配的需…

低功耗遥测终端机:数据的守护者

一、定义 旭华智能SV-RT8588低功耗遥测终端机是一种用于远程监测和数据采集的智能化监测设备。它通过各种传感器&#xff0c;实时采集、存储环境参数&#xff0c;如温度、湿度、压力、流量等&#xff0c;并通过4G/网口等通讯方式&#xff0c;将监测数据传输至数据中心或云平台…

嵌入式软件工程师面试题——2025校招社招通用(C/C++)(四十九)

说明&#xff1a; 面试群&#xff0c;群号&#xff1a; 228447240面试题来源于网络书籍&#xff0c;公司题目以及博主原创或修改&#xff08;题目大部分来源于各种公司&#xff09;&#xff1b;文中很多题目&#xff0c;或许大家直接编译器写完&#xff0c;1分钟就出结果了。但…

【高效开发工具系列】Wolfram Alpha

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

再识C语言 DAY12 【再识函数(上)】

文章目录 前言一、函数是什么&#xff1f;二、自定义函数参数返回值void修饰函数的返回值和参数 函数不能嵌套定义形参和实参的区别return的用法补充if……else if……else……的用法 后面会讲解“函数调用&#xff0c;函数声明以及函数原型&#xff0c;块级变量&#xff0c;归…

打工人速看!PMP考试值得考吗?PMP项目管理证书含金量高吗?详细解答来了!

当下人才济济的招聘市场&#xff0c;不难发现&#xff0c;拥有更多技能和懂得管理知识的人士永远是招聘市场抢手的香饽饽&#xff01;而作为苦苦求职工作的打工人&#xff0c;总是想自己要是能再优秀点就好了&#xff01; 今天分享的 PMP 项目管理证书就是一个给自己“镀金”的…

如何开通GitHub Copilot

GitHub Copilot 是由GitHub 和OpenAI共同开发的人工智能代码辅助工具&#xff0c;可以自动地生成高质量代码片段、上下文信息等。 通过自然语言处理和机器学习技术&#xff0c;能够通过分析程序员编写的代码、注释和上下文信息&#xff0c;自动生成代码&#xff0c;减轻程序员的…

Python读写EXCEL文件常用方法

python读写excel的方式有很多&#xff0c;不同的模块在读写的讲法上稍有区别&#xff0c;这里我主要介绍几个常用的方式。 用xlrd和xlwt进行excel读写&#xff1b;用openpyxl进行excel读写&#xff1b;用pandas进行excel读写&#xff1b; 一、数据准备 为了方便演示&#xf…