Given an array of non-negative integers, you are initially positioned at the first index of the array.
Each element in the array represents your maximum jump length at that position.
Determine if you are able to reach the last index.
例子:
A = [2,3,1,1,4]
, return true
.
A = [3,2,1,0,4]
, return false
.
思路: 注意若所给的输入为[0],也算能够到达。只需记录当前能够到达的最远位置,大于或等于数组的大小就算成功,为了得到最大位置,我们假设每次只向前移动一位,用之前能够到达的最远位置与此刻能到达的最远位置比较得到结果,当我们能够到的最远位置小于或等于实际所在位置时,不可能再向前走,为失败。
class Solution {
public:
bool canJump(vector<int>& nums) {
if (nums.size() == 1) {
return true;
}
int i = 0;
int temp = 0;
for (; i < nums.size(); i++) {
temp = max(temp, i + nums[i]);
if (temp <= i) {
break;
}
}
if (temp >= nums.size() - 1) {
return true;
}
return false;
}
};