2018年10月12日更新一下,最简单的思路
代码直观得很。抄的,哈哈。
class Solution {
public:
bool canJump(vector<int>& nums) {
int Maxreach=0;
for(int i=0;i<nums.size();i++){
if(i>Maxreach)
return false;
Maxreach=max(Maxreach,i+nums[i]);
if(Maxreach>=nums.size()-1)
return true;
}
}
};
与跳跃游戏2基本一个思路。每次选一个可以走最远的点当下一个点,如果这个点的值是0,那么就走不到终点。
class Solution {
public:
bool canJump(vector<int>& nums) {
int pos = 0;
int next_pos = 0;
if (nums.size() == 0)
return false;
while(true){
if (pos + nums[pos] >= nums.size() - 1)
return true;
int imax = -1;
int i = 0;
for (i = pos + 1; i <= pos + nums[pos] && i < nums.size(); i ++){
if (i + nums[i] >= imax){
imax = i + nums[i];
next_pos = i;
}
}
if (nums[next_pos] == 0 && next_pos != nums.size() - 1){
return false;
}
pos = next_pos;
}
}
};