比二稍微简单一些,主体还是使用确定边界、更新边界的方案,但是不用纪录次数,而是遍历结束后看最后更新的边界是否大于或等于数组最后一个位置
class Solution {
public:
bool canJump(vector<int>& nums) {
int res=0;
int maxpos=0,end=0;
if(nums.size()==1) return true;//如果是一个元素,一定是真
for(int i=0;i<nums.size()-1;i++){
maxpos=max(nums[i]+i,maxpos);
if(i==end){//到达边界
end=maxpos;//更新边界
}
}
if(end>=nums.size()-1){//表示边界能到最后一个位置
return true;
}
else{
return false;
}
}
};