45. 跳跃游戏 II

45. 跳跃游戏 II - 力扣(LeetCode)

题解:

cpp 复制代码
class Solution {
public:
    int jump(vector<int>& nums) {
        // maxPos:在当前已进行的跳跃中,能够到达的最远下标
        // end:当前这一跳所能到达的最右边界(即当前跳跃的覆盖范围终点)
        // step:已经完成的跳跃次数
        int maxPos = 0, n = nums.size(), end = 0, step = 0;

        // 遍历数组,但不需要处理最后一个元素(n-1),
        // 因为只要能到达 n-1 就完成了目标,无需再跳
        for (int i = 0; i < n - 1; ++i) {
            // 确保当前位置 i 是可达的(题目保证有解,此条件通常恒真,可省略但保留更安全)
            if (maxPos >= i) {
                // 更新在当前位置 i 能够跳到的最远位置
                maxPos = max(maxPos, i + nums[i]);

                // 如果到达了当前跳跃的边界(即当前这一步的最远位置),
                // 说明必须进行一次新的跳跃,才能继续前进
                if (i == end) {
                    end = maxPos;   // 将边界更新为下一步能到达的最远位置
                    ++step;         // 跳跃次数加一
                }
            }
        }
        return step;
    }
};
相关推荐
ZPC82107 小时前
docker 镜像备份
人工智能·算法·fpga开发·机器人
ZPC82107 小时前
docker 使用GUI ROS2
人工智能·算法·fpga开发·机器人
琢磨先生David7 小时前
Day1:基础入门·两数之和(LeetCode 1)
数据结构·算法·leetcode
哇哈哈20217 小时前
信号量和信号
linux·c++
颜酱7 小时前
栈的经典应用:从基础到进阶,解决LeetCode高频栈类问题
javascript·后端·算法
多恩Stone7 小时前
【C++入门扫盲1】C++ 与 Python:类型、编译器/解释器与 CPU 的关系
开发语言·c++·人工智能·python·算法·3d·aigc
生信大杂烩8 小时前
癌症中的“细胞邻域“:解码肿瘤微环境的空间密码 ——Nature Cancer 综述解读
人工智能·算法
蜡笔小马8 小时前
21.Boost.Geometry disjoint、distance、envelope、equals、expand和for_each算法接口详解
c++·算法·boost
m0_531237178 小时前
C语言-数组练习进阶
c语言·开发语言·算法
超级大福宝8 小时前
N皇后问题:经典回溯算法的一些分析
数据结构·c++·算法·leetcode