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;
    }
};
相关推荐
吃好睡好便好1 天前
在Matlab中绘制横直方图
开发语言·学习·算法·matlab
仰泳之鹅1 天前
【C语言】自定义数据类型2——联合体与枚举
c语言·开发语言·算法
于小猿Sup1 天前
VMware在Ubuntu22.04驱动Livox Mid360s
linux·c++·嵌入式硬件·自动驾驶
x_yeyue1 天前
三角形数
笔记·算法·数论·组合数学
念何架构之路1 天前
Go语言加密算法
数据结构·算法·哈希算法
AI科技星1 天前
《数学公理体系·第三部·数术几何》(2026 年版)
c语言·开发语言·线性代数·算法·矩阵·量子计算·agi
小小编程路1 天前
C++ 多线程与并发
java·jvm·c++
失去的青春---夕阳下的奔跑1 天前
560. 和为 K 的子数组
数据结构·算法·leetcode
黎阳之光1 天前
黎阳之光:以视频孪生重构智慧医院信息化,打造高标项目核心竞争力
大数据·人工智能·物联网·算法·数字孪生
丷丩1 天前
三级缓存下MVT地图瓦片服务性能优化策略
算法·缓存·性能优化·gis·geoai-up