一开始想复杂了,其实很简单。
将数组遍历一遍,每遍历一个元素就不断更新当前所能到达的最大下标。如果遍历到一个下标市不在最大下标的范围,就返回false。如果能一直遍历到结尾,就返回true。
class Solution {
public:
bool canJump(int A[], int n) {
int max_index = 0;
for(int i = 0; i < n; i++){
if(i <= max_index)
max_index = (A[i]+i) > max_index ? (A[i]+i) : max_index;
else return false;
}
return true;
}
};