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;
}
};