55. 跳跃游戏

给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。

数组中的每个元素代表你在该位置可以跳跃的最大长度。

判断你是否能够到达最后一个下标。

思路:
每次走到一个格子的时候,你检查现在格子里面的“能量”和你自己拥有的“能量”哪个更大,取更大的“能量”! 如果你有更多的能量,你就可以走的更远啦!~
代码

class Solution {
public:
    bool canJump(vector<int>& nums) {
        int len=nums.size();
        if(len<=1){
            return true;
        }
        map<int,int> pre;
        pre[0]=nums[0];
        for(int i=0;i<len;i++){
            int pace=pre.begin()->second;
            int remaining=pace-(i-pre.begin()->first);
            if(remaining<0){
                return false;
            }
            if(remaining<nums[i]){
                pre.clear();
                pre[i]=nums[i];
            }
        }
        return true;
    }
};
posted @ 2022-11-07 15:55  ImreW  阅读(13)  评论(0编辑  收藏  举报