详细思路

对于每一步,都更新最远能否到达的下标,如果已经来到了最远并且此时为0,false
 
精确定义
maxLeft最远能否到达的下标
i需要判断
class Solution {
public:
    bool canJump(vector<int>& nums) {
        int n=nums.size();
        if(n==0)return true;
        int maxLeft=nums[0];
        if(n==1&&nums[0]==0)return true;
        if(n>1&&nums[0]==0)return false;
        for(int i=1;i<nums.size()-1;i++){
            if(i==maxLeft&&nums[i]==0)return false;
            maxLeft=max(maxLeft,i+nums[i]);
        }
        return true;
    }
};

 

posted on 2021-07-28 20:45  offer快到碗里来~  阅读(29)  评论(0)    收藏  举报