题目
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.
For example:
A = [2,3,1,1,4], return true.
A = [3,2,1,0,4], return false.
思路
从尾端开始遍历,如果当前数字不能到达下一个位置,则给最低跳跃长度加1,继续遍历下一个数字。这个思路打败了92.23%,笔者非常高兴!
代码
class Solution {
public:
bool canJump(vector<int>& nums) {
int numOfJump = 0;
for (vector<int>::reverse_iterator i = nums.rbegin()+1; i != nums.rend(); i++) {
if (*i <= numOfJump) {
numOfJump++;
} else {
numOfJump = 0;
}
}
if (numOfJump == 0) {
return true;
} else {
return false;
}
}
};