网站源码小千个人网2024小学生时事新闻十条
2026/2/15 16:17:07 网站建设 项目流程
网站源码小千个人网,2024小学生时事新闻十条,奢侈品电商网站首页设计,公共资源交易中心是属于哪个部门题目描述#xff1a; 思路分析#xff1a; 本题依旧是贪心思想#xff0c;通过局部最优找全局最优。 本题局部最优就是在当前可到达范围内选择能跳的更远的那个点#xff0c;通过不断选择范围内能跳的最远的点来获得全局的最少跳跃次数。 整体过程从数组起点开始向前遍历…题目描述思路分析本题依旧是贪心思想通过局部最优找全局最优。本题局部最优就是在当前可到达范围内选择能跳的更远的那个点通过不断选择范围内能跳的最远的点来获得全局的最少跳跃次数。整体过程从数组起点开始向前遍历用一次遍历来模拟跳跃过程。遍历过程中始终维护两个关键信息当前这一步能够到达的最远位置end以及在当前范围内下一步能够到达的最远位置maxpos。在遍历到每一个位置时都会尝试利用该位置的跳跃能力去更新“下一步最远能到达的位置”。这样可以保证在不增加跳跃次数的前提下尽可能扩大下一次跳跃的覆盖范围。当遍历位置到达当前这一步的最远边界时说明这一跳所能利用的所有位置已经全部考虑完毕此时必须进行一次新的跳跃。跳跃次数加一同时将当前可达范围更新为之前计算好的下一步最远位置继续向前推进。通过这种方式每一次跳跃都不是立即决定跳到哪个具体位置而是先在当前范围内进行“最优扩展”等到必须跳的时候再统一更新范围并计数。不断重复这一过程最终覆盖到数组的最后一个位置从而得到最少的跳跃次数。代码class Solution { public int jump(int[] nums) { int lennums.length; int end0; int maxpos0; int step0; for(int i0;ilen-1;i){ maxposMath.max(maxpos,inums[i]); if(iend){ endmaxpos; step; } } return step; } }为什么循环条件是i len - 1因为代码在遍历过程中一旦到达当前可达边界就会统计一次跳跃而当已经到达数组最后一个位置时实际上不需要再进行任何跳跃如果循环遍历到len - 1就有可能在终点位置多计算一次跳跃次数。因此只遍历到len - 2也就是使用i len - 1可以保证只在“还需要继续向前推进”的情况下才统计跳跃次数避免结果偏大。

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

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

立即咨询