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)。

相关推荐
阿Y加油吧4 分钟前
力扣滑动窗口两大压轴题:最小覆盖子串 + 滑动窗口最大值(保姆级思路 + 代码详解)
算法·leetcode·职场和发展
北顾笙98013 分钟前
day11-数据结构力扣
数据结构·算法·leetcode
月落归舟23 分钟前
Lambda + Arrays---小练习
数据结构·算法
2601_9553544626 分钟前
seo臻系统和百度seo有什么区别
算法
君义_noip32 分钟前
信息学奥赛一本通 1487:【例 2】北极通讯网络
算法·图论·信息学奥赛·csp-s
sensen_kiss34 分钟前
CPT306 Principles of Computer Games Design 电脑游戏设计原理 Pt.5 VR 游戏
学习·游戏·vr
上海云盾安全满满35 分钟前
游戏被攻击了要如何选择防护,接高防服务器还是游戏盾
服务器·网络·游戏
会编程的土豆1 小时前
【leetcode hot 100】二叉树二叉树
数据结构·算法·leetcode
风酥糖1 小时前
Godot游戏练习01-第23节-新增Player名称显示
游戏·游戏引擎·godot
XiYang-DING1 小时前
【LeetCode】203. 移除链表元素(Remove Linked List Elements)
算法·leetcode·链表