LeetCode.55 跳跃游戏

LeetCode.55 跳跃游戏

题目描述

解题思路

错误的解题思路

我一开始的思路是累加可跳范围内的最大值sum,如果最终sum >= nums.size()那么就返回true,这种思路是错误的,因为在你选择最大值的时候,你并没有对每个格子选择能跳最远的距离进行跳跃。

解题思路

  • 如果某一个作为 起跳点 的格子可以跳跃的距离是 3,那么表示后面 3 个格子都可以作为 起跳点
  • 可以对每一个能作为 起跳点 的格子都尝试跳一次,把 能跳到最远的距离 不断更新
  • 如果可以一直跳到最后,就成功了

代码

cpp 复制代码
class Solution {
public:
    bool canJump(vector<int>& nums) {
        int max_cover = 0;
        for (int i = 0; i < nums.size(); i++) {
            if (max_cover < i) return false;
            max_cover = max(nums[i] + i, max_cover);
        }
        return true;
    }
};
相关推荐
你撅嘴真丑13 小时前
第八章 - 贪心法
开发语言·c++·算法
VT.馒头13 小时前
【力扣】2625. 扁平化嵌套数组
前端·javascript·算法·leetcode·职场和发展·typescript
wanghu202413 小时前
AT_abc443_C~E题题解
c语言·算法
u01092727113 小时前
模板元编程调试方法
开发语言·c++·算法
2401_8384725114 小时前
C++图形编程(OpenGL)
开发语言·c++·算法
-dzk-14 小时前
【代码随想录】LC 203.移除链表元素
c语言·数据结构·c++·算法·链表
进击的小头14 小时前
陷波器实现(针对性滤除特定频率噪声)
c语言·python·算法
知无不研14 小时前
冒泡排序算法
算法·冒泡排序·排序
毅炼14 小时前
hot100打卡——day17
java·数据结构·算法·leetcode·深度优先
Tisfy14 小时前
LeetCode 3010.将数组分成最小总代价的子数组 I:排序 OR 维护最小次小
算法·leetcode·题解·排序·最小次小值