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

相关推荐
李可以量化6 小时前
Python之如何做出交易日历(上)
人工智能·算法·qmt·量化 qmt ptrade
会编程的土豆6 小时前
【数据结构与算法】新二叉树
数据结构·算法·二叉树
jerryinwuhan7 小时前
基于结构可控性的给水管网传感器布点选择算法
数据库·算法
南宫萧幕7 小时前
车辆控制基础:从 EKF 状态估计到非线性 MPC 轨迹跟踪的闭环实现
算法·matlab·汽车·控制·pid
点PY7 小时前
《高质量的实时直接体绘制算法》论文精读
算法
X journey7 小时前
机器学习进阶(24):主成分分析PCA
人工智能·算法·机器学习
MediaTea7 小时前
AI 术语通俗词典:精确率(分类)
人工智能·算法·机器学习·分类·数据挖掘
开开心心就好7 小时前
解决打印机共享难题的实用工具
人工智能·vscode·游戏·macos·音视频·语音识别·媒体
Morwit7 小时前
【力扣hot100】 416. 分割等和子集
数据结构·c++·算法·leetcode·职场和发展
ECT-OS-JiuHuaShan7 小时前
朱梁整体论,万有代谢元,矛盾因果网,人间正道是沧桑
人工智能·科技·算法·机器学习·拓扑学