题目大意: 给定一个数组,数组里面每个元素表示当前位置能向前走的步数,求能够走到最后一个位置。
解题思路:维护一个当前局部最优的最长距离,遍历没最长距离内的每个元素能到达的最长距离,更新最长距离
最后判断这个最长距离是否超过了数组的长度
class Solution {
public:
bool canJump(int A[], int n) {
if(n == 0) {
return false;
}
if(n == 1) {
return true;
}
int maxJump = 0;
for(int i = 0; i < n && i <= maxJump; i++) {
maxJump = max(maxJump, i + A[i]);
}
if(maxJump >= n - 1) {
return true;
}
return false;
}
};