python
class Solution:
def canJump(self, nums: List[int]) -> bool:
furthest, n = 0, len(nums)
for i in range(n):
if i <= furthest:
furthest = max(i+nums[i], furthest)
if furthest >= n-1:
return True
return False
c++
class Solution {
public:
bool canJump(vector<int>& nums) {
// 思路:每在一个位置,都跳的尽量远,看最后能否越过终点线
int farest = 0;
for (int i = 0; i < nums.size(); ++i) {
if (farest < i) return false; // 之前的最远距离都到不了位置i,直接return false
farest = max(farest, nums[i] + i);
}
return true;
}
};