class Solution {
public:
bool canJump(vector<int>& nums) {
int ans=0;//ans表示当前能走的最大距离
for(int i=0;i<nums.size();i++){
if(i>ans){//如果所在位置超过了当前能走的最大距离
return false;
}
else{
ans=max(i+nums[i],ans);//更新最大距离
}
}
return true;
}
};
class Solution {
public:
int jump(vector<int>& nums) {
int ans=0;//当前最远跳跃
int maxn=0;//上次跳跃可达范围右边界(下次的最右起跳点)
int step=0;
for(int i=0;i<nums.size()-1;i++){
if(ans>=i){
ans=max(ans,i+nums[i]);
}
if(i==maxn){
maxn=ans;
step++;
}
}
return step;
}
};
思路挺巧妙