网站地图在首页做链接网站变量
2026/4/18 11:38:50 网站建设 项目流程
网站地图在首页做链接,网站变量,视频制作和剪辑,知名网络营销推广文章目录一、读题二、示例讲解三 、算法思路四、代码实现#xff1a;一、读题 题目来源#xff1a;https://leetcode.cn/problems/jump-game/ 题目也是很好理解啊#xff0c;就是根据数组里每一位的数值来判断是否可以走到结尾#xff0c;并且每一位数值不是都要走完#…文章目录一、读题二、示例讲解三 、算法思路四、代码实现一、读题题目来源https://leetcode.cn/problems/jump-game/题目也是很好理解啊就是根据数组里每一位的数值来判断是否可以走到结尾并且每一位数值不是都要走完可以只走一步数值是可移动的最大步数。二、示例讲解实例1[2,3,1,1,4]我们最开始是在 nums[0] 的位置那么我们接下来可以移动的步数最大是 2 我们可以选择走最大值直接走到nums[2]的位置这个时候我们可以移动的步数最大值是 1 那么我们移动一步走到nums[3]这个时候我们可以移动的步数最大值是 1 接下来只需要移动一步我们就走到了数组的最后一位结束示例 2 [3,2,1,0,4]我们最开始是在 nums[0] 的位置那么接下来我们可以走最大步数是 3 我们可以选择走3步这个时候我们走到nums[3]这个时候我们走不动了当前运行我们移动的步数为0说明这里是一个坑不给走了那么我们重新来一次。我们最开始是在 nums[0] 的位置那么接下来我们可以走最大步数是 3 我们可以选择走2步这个时候我们走到nums[2] 这个时候我们可以移动的最大步数是 1 那么我们就移动一步来到nums[3]这个时候我们又进入坑了还是不行我们最开始是在 nums[0] 的位置那么接下来我们可以走最大步数是 3 我们可以选择走1步这个时候我们走到nums[1] 这个时候我们可以移动的最大步数是 2 那么我们就移动 1 步来到nums[2]这个时候我们移动的步数最大值是1还是会进入坑那我们在nums[1]的时候移动 2 步结果还是来到nums[3]还是走不通所有方法都试过了失败三 、算法思路比较难想这是一个贪心的题目贪心的题目有时候特别难想到主包是研究了好久才理解的。首先我们看题我们的最终目的是需要到达数组的最后一个位置那就意味着到达或者超过都算是到达。我们看数据范围数组内的数值最小是0那就是不存在往回移动的情况那说明我们只有两种选择要么是往前移动要么原地不动原地不动结果就是失败只要能够一直往前移动那么就绝对可以到达也就是说只要我们不进入值为0的位置那么就没问题我们根据这个思路我们想一想开始遍历的时候我拿到一个值这个时候我们记录这个值为max这个值表示当前能够移动到的最远位置那么接下来我们往后移动又会得到一个值我们将这个值加上当前的位置和之前记录的值相比较那个大我们就保存下来只要在移动过程中能够一直保证max一直是大于或者等于当前的移动位置 i那么说明没有问题但是如果我们发现位置 i 移动到的位置大于max那么说明在中间的时候就卡住了不能往后走了那么就说明失败当前的数组无法走到最后max表示我们理论上可以移动到的最远位置i 表示我们实际移动的位置数组遍历的下标如果实际移动的位置 大于 max理论上可以移动到的最远位置 那说明是不正确的只有max能够到达的位置才是我们真正能到达的最远位置如果说max都到不了的地方那么我们也是到不了的我们看示例二这一组数据的max是3最远可以走到nums[3]那么我最远可以走到的地方是3但是结尾是4能够走到吗我们再看看示例一在nums[1]的位置的时候max是43 1最远可以到达nums[4]那么说明可以到达nums[4]也就是最后的位置。大家好好理一理理解max的意义能够到达的最远位置代码实现很简单没精神有点不太好理解四、代码实现class Solution { public boolean canJump(int[] nums) { int max 0;//记录可以到达的最远位置 for(int i 0 ; i nums.length ; i) { if(i max) {//当前位置可以到达 max Math.max(max, nums[i] i); } else { //出现不可到达的 return false; } } return true; } }各位佬如果有什么更加高效的算法欢迎评论区讨论指导一下主包进步原诸君共勉

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询