记得以前做过,当时没搞清逻辑关系想了好久,现在认识了贪心算法,很快就看出来了
class Solution {
public:
bool canJump(vector<int>& nums) {
int i=0;
int n=nums[0];
while(i!=n&&n<nums.size()-1){
i++;
n=max(n,i+nums[i]);
}
if(n>=nums.size()-1) return 1;
return 0;
}
};
其实很简单,i代表当前位置,n代表可移动到的最末位置,从i遍历到n,如果当前i+nums[i]要大于n则更新n,直到i和n相等无法继续前进或i到达终点。