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;
    }
};
相关推荐
Tairitsu_H3 分钟前
[LC优选算法#5] 分治:快排 | 颜色分类 | 排序数组 | 第K大元素
c++·算法·leetcode·排序算法·快速排序
青山木5 分钟前
Hot 100 --- 滑动窗口最大值
java·数据结构·算法·leetcode·动态规划
青山木6 分钟前
Hot 100 --- 除自身以外数组的乘积
java·数据结构·算法
Frank学习路上10 分钟前
【C++】面试:STL容器与算法
c++·算法·面试
凡人叶枫10 分钟前
Effective C++ 条款33:避免遮掩继承而来的名字
linux·服务器·开发语言·c++·嵌入式开发
10岁的博客11 分钟前
NOIP2010普及组「接水问题」详解:模拟算法与优先队列解法
开发语言·c++·算法
凡人叶枫11 分钟前
Effective C++ 条款31:将文件间的编译依存关系降至最低
linux·开发语言·c++·php·嵌入式开发·effective c++
彼岸星光ぐ>12 分钟前
排序算法对比
数据结构·算法·排序算法
liulilittle17 分钟前
整数溢出陷阱:用除法安全比较乘积
c++