news 2026/4/14 23:35:21

45.跳跃游戏Ⅱ

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
45.跳跃游戏Ⅱ

题目描述

题解一(贪心算法)(正向查找可到达的最大位置)(最优解)

思路

代码

classSolution{publicintjump(int[]nums){// 如果数组长度只有1,说明已经在终点,不需要跳跃if(nums.length<=1)return0;intjumps=0;// 记录跳跃次数intcurrentEnd=0;// 当前这一跳能到达的最远边界intfarthest=0;// 在当前边界内,下一步能到达的最远极限// 注意:这里遍历到 nums.length - 2 即可 (即 i < nums.length - 1)// 因为如果当前边界 currentEnd 已经覆盖了最后一个元素,就不需要再起跳了for(inti=0;i<nums.length-1;i++){// 沿途更新下一步能到达的最远距离farthest=Math.max(farthest,i+nums[i]);// 如果走到了当前这一跳的边界,说明必须进行下一次跳跃了if(i==currentEnd){jumps++;// 跳跃次数 +1currentEnd=farthest;// 更新下一次跳跃的边界// 优化:如果新的边界已经到达或超过终点,直接结束if(currentEnd>=nums.length-1){break;}}}returnjumps;}}

复杂度分析

  • 时间复杂度:O(N)O(N)O(N)。其中NNN是数组 nums 的长度
  • 空间复杂度:O(1)O(1)O(1)。整个算法执行过程中,我们仅仅声明了三个整型变量(jumps、currentEnd、farthest)来记录状态。无论输入的数组 nums 有多长,我们所需的额外内存空间都是固定不变的

题解二(贪心算法)(反向查找出发位置)

思路

代码

classSolution{publicintjump(int[]nums){intposition=nums.length-1;// 当前需要到达的目标位置,初始为终点intsteps=0;// 记录跳跃次数// 当目标位置还没退回到起点 0 时,继续反向查找while(position>0){// 从左向右遍历,寻找能到达当前 position 的最左侧(最早)位置for(inti=0;i<position;i++){if(i+nums[i]>=position){position=i;// 更新目标位置为这个起跳点steps++;// 跳跃次数 +1break;// 已经找到了最左侧的,跳出 for 循环,开始新一轮的 while 寻找}}}returnsteps;}}

复杂度分析

  • 时间复杂度:O(N2)O(N^2)O(N2)。在最坏的情况下(例如数组是 [1, 1, 1, 1, 1]),我们每次都只能往左退一步。为了退这一步,for 循环要从 0 遍历到 position - 1。总的遍历次数大约是(N−1)+(N−2)+⋯+1(N-1) + (N-2) + \dots + 1(N1)+(N2)++1,属于O(N2)O(N^2)O(N2)级别
  • 空间复杂度:O(1)O(1)O(1)。只使用了几个常数级别的额外变量
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/14 23:31:08

智能运维 Agent 架构设计与实现

1. 引言:智能运维的范式转变 1.1 传统 SRE 的困境 传统 Site Reliability Engineering(SRE)面临核心挑战[^1]: 告警风暴:大规模分布式系统中,单一故障可能触发数百条告警 告警疲劳:SRE 工程师每天处理大量告警,其中相当比例是误报或噪音 根因定位慢:分布式链路追踪数…

作者头像 李华
网站建设 2026/4/14 23:28:51

今年最火的AI产品,不止龙虾|榜单申报中

组委会 发自 凹非寺量子位&#xff5c;公众号 QbitAI最近每个人都被“龙虾”“爱马仕”刷屏了。但AI产品总是面临的问题是&#xff0c;爆火的很多&#xff0c;真正能留下的很少。这正是我们希望回答的&#xff1a;今年最值得关注的AI企业&产品是什么&#xff1f;不只是龙虾…

作者头像 李华
网站建设 2026/4/14 23:27:18

R语言实战:一键获取KEGG通路基因列表并完成ID转换

1. 为什么需要KEGG通路基因列表 在生物医学研究中&#xff0c;我们经常需要分析某个信号通路中涉及的基因。比如在研究癌症发生机制时&#xff0c;可能需要查看某个关键信号通路&#xff08;如PI3K-AKT通路&#xff09;中的所有基因。KEGG数据库是最常用的通路数据库之一&#…

作者头像 李华