LeetCode[中等] 45. 跳跃游戏 II

给定一个长度为 n0 索引 整数数组 nums。初始位置为 nums[0]

每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i + j] 处:

  • 0 <= j <= nums[i]
  • i + j < n

返回到达 nums[n - 1] 的最小跳跃次数。生成的测试用例可以到达 nums[n - 1]

思路 贪心算法

currMaxPos为当前跳跃次数可达最大距离,nextMaxPos为下一次跳跃可达最大距离。

如果 i>currMaxPosition,则下标 i 超出跳跃次数 currJumps 可以到达的最大下标,因此到达下标i的最小跳跃次数 + 1,currMaxPos 更新为 nextMaxPos

cs 复制代码
public class Solution {
    public int Jump(int[] nums) {
        int currMaxPos = 0, nextMaxPos = 0;
        int stepNums = 0;
        for(int i = 0; i < nums.Length; i++)
        {
            if(i > currMaxPos)
            {
                stepNums++;
                currMaxPos = nextMaxPos;
            }
                
            nextMaxPos = Math.Max(nextMaxPos, nums[i] + i);
        }
        return stepNums;
    }
}

复杂度分析

  • 时间复杂度:O(n),其中 n 是数组 nums 的长度。需要遍历数组一次,每个下标处的计算时间是 O(1)。

  • 空间复杂度:O(1)。

相关推荐
无别0529 分钟前
【做游戏】做完游戏Demo后没地方发布?
游戏·玩游戏
wdfk_prog24 分钟前
canopennode-rtt推荐,不只可以做从站,也可以承担主站角色
c语言·开发语言·数据库·学习·算法·深度优先
lilian23332 分钟前
HarmonyOS 7 新特性(二十九)|游戏伴随服务:悬浮协作与质量降级
游戏·语音识别·harmonyos
BioRunYiXue43 分钟前
科研干货 | IC50全面解读:概念解析、实验设计与数据分析要点
java·开发语言·javascript·人工智能·算法·数据挖掘·数据分析
hahaha601644 分钟前
HLS高层次综合设计技巧--UART_TX接收模块设计案例
人工智能·算法·计算机视觉
302wanger1 小时前
一个程序员看完《逆行人生》:电影没说透的,比电影更扎心
算法
hele_two1 小时前
C++模拟蚁群(二)
c++·算法·数学建模·图形渲染
WK100%1 小时前
LeetCode双题:滑动窗口破解最小子数组
c++·经验分享·笔记·算法
sheeta19981 小时前
LeetCode 每日一题笔记 日期:2026.09.02 题目:3875.构造奇偶一致的数组 I
笔记·算法·leetcode
明月_清风1 小时前
递归算法:从原理到实战,一次讲透
后端·算法·go