1.代码
#include <vector>
#include <algorithm>
class Solution {
public:
bool canJump(std::vector<int>& nums) {
int maxReach = 0;
int n = nums.size();
for (int i = 0; i < n; ++i) {
if (i > maxReach) {
return false;
}
maxReach = std::max(maxReach, i + nums[i]);
if (maxReach >= n - 1) {
return true;
}
}
return false;
};
2.思路
遍历整个数组并更新最远可达位置,如果当前位置大于最远可达位置,则返回false,如果过程中最远可达位置超过了最后一个元素所在位置,则返回true。如果遍历了整个数组仍没有结果则返回false。