贪心:最远距离
class Solution {
public:
bool canJump(vector<int>& nums) {
int mm = 0;//能跳到的最远距离
for (int i = 0; i < nums.size(); i++){//遍历一遍找到每个点的最远距离
if (i > mm) return false;//最远距离小于自己的位置
mm = max(mm, i + nums[i]);//更新最远距离
}
return true;
}
};
追溯起点
class Solution {
public:
bool canJump(vector<int>& nums) {
int n=nums.size()-1;
int last=n;
for(int i=n-1;i>=0;i--){
if(nums[i]+i>=last){
last=i;
}
}
if(last==0){
return true;
}
return false;
}
};