【代码随想录day 28】 力扣 55.跳跃游戏
视频讲解:https://www.bilibili.com/video/BV1VG4y1X7kB/?vd_source=a935eaede74a204ec74fd041b917810c
文档讲解:https://programmercarl.com/0055.%E8%B7%B3%E8%B7%83%E6%B8%B8%E6%88%8F.html#%E6%80%9D%E8%B7%AF
力扣题目:https://leetcode.cn/problems/jump-game/
这道题倒是不难,就是思路很难想。
乍一看这道题普遍思路就是从第一个位置跳几步到下一个位置,再看下一个位置跳几步能到最后。
但实际上不用想的那么麻烦,我们只要跳的覆盖范围能够逐步覆盖到最后一个元素就好了。
就像这样,因此我们不断更新cover,cover从小更新到大,不用担心for循环的边界混乱问题。代码如下所示。
class Solution {
public:bool canJump(vector<int>& nums) {int cover = 0;if(nums.size() == 1){return true;}for(int i = 0; i <= cover; i++){cover = max(nums[i] + i, cover);if(cover >= nums.size() - 1){return true;}}return false;}
};