LeetCode热题100 跳跃游戏 II

题目描述

给定一个长度为 n 的 0 索引整数数组 nums。初始位置在下标 0。

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

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

返回到达 n - 1 的最小跳跃次数。测试用例保证可以到达 n - 1。

示例 1:

输入 : nums = [2,3,1,1,4]
输出 : 2
解释 : 跳到最后一个位置的最小跳跃数是 2。

从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。

示例 2:

输入 : nums = [2,3,0,1,4]
输出: 2

提示:

1 <= nums.length <= 10410^4104

0 <= nums[i] <= 1000

题目保证可以到达 n - 1

思路

我们记录第0步可以到达的最远位置,超过第0步位置的可以到达的就是第1步,超过第1步位置的可以到达的就是第2步...,直到到达终点。

代码

cpp 复制代码
class Solution {
public:
    int jump(vector<int>& nums) {
        int maxPos = 0, n = nums.size(), end = 0, step = 0;
        for(int i = 0; i < n; ++i)
        {
            // 每次更新到达的最大值
            maxPos = max(maxPos, i + nums[i]);
            // 看是否到达第step步的最后一个
            if(i == end && i != n - 1)
            {
                end = maxPos;
                ++step;
            }
        }
        return step;
    }
};
相关推荐
rit84324992 小时前
基于NSGA-II的多目标优化算法(MATLAB实现)
开发语言·算法·matlab
香蕉鼠片2 小时前
第三大的数
数据结构·算法·leetcode
汀、人工智能2 小时前
[特殊字符] 第28课:相交链表
数据结构·算法·链表·数据库架构··相交链表
charlie1145141912 小时前
现代Qt开发——0.1——如何在IDE中配置Qt环境?
开发语言·c++·ide·qt·嵌入式
计算机安禾2 小时前
【数据结构与算法】第32篇:交换排序(一):冒泡排序
c语言·数据结构·c++·算法·链表·排序算法·visual studio code
lxh01132 小时前
蜗牛排序题解
javascript·算法
胖咕噜的稞达鸭2 小时前
C/C++动态内存管理,malloc,calloc,realloc的区别,动态内存中的错误汇总
c语言·开发语言·c++
charlie1145141912 小时前
嵌入式C++教程实战之Linux下的单片机编程(6):从点亮第一盏LED开始 —— 我们为什么要用现代C++写STM32
linux·c语言·开发语言·c++·stm32·单片机
linux开发之路2 小时前
C++实现Whisper+Kimi端到端AI智能语音助手
c++·人工智能·llm·whisper·openai