题解思路:代码随想录--代码随想录本题题解
本题不考虑每个结点走几步只考虑范围
在nums[0]=2,也就是在nums[1]和nums[2]找到最大范围(for(int i=0;i<=cover;i++))
nums[1]=3,也就是在nums[2]和nums[4]这个区间范围找到最大范围,而因为此时已经到达最后一个下标 返回true
为什么cover=max(i+nums[i],cover)而不是cover=i+nums[i]?
class Solution {
public:bool canJump(vector<int>& nums) {if(nums.size()==1)return true;int cover=0;for(int i=0;i<=cover;i++){cover=max(cover,i+nums[i]);if(cover>=nums.size()-1)return true;}return false;}
};