力扣HOT100之贪心算法:55. 跳跃游戏
之前刷代码随想录的时候做过这道题,现在做又忘完了(ˉ▽ˉ;)…看了下自己当时写的博客,一下就明白了,这道题就是定义一个变量cover
来记录最大覆盖范围,遍历数组的每一个元素,不断地更新最大覆盖范围,当最大覆盖范围达到或者超过nums.size() - 1
时,则说明可以通过跳跃达到数组的末端,直接返回true
,每循环一次,i
加一,当i
超出cover
的范围时,则说明我们无法通过跳跃的方式到达当前的nums[i]
处,因为cover
并没有把这个元素覆盖住,此时我们退出循环,直接返回false
即可。
class Solution {
public:bool canJump(vector<int>& nums) {int cover = 0;//当i跳出了cover的范围,就说明不能通过下标跳跃的方式跳到终点for(int i = 0; i <= cover; i++){cover = max(i + nums[i], cover);if(cover >= nums.size() - 1) return true;}return false;}
};