顺序维护当前位置可到达最远位置,判断其是否可到达最后一个下标。
class Solution:
def canJump(self, nums: List[int]) -> bool:
l, max_pos = len(nums), 0
for i in range(l):
if i <= max_pos:
max_pos = max(max_pos, i + nums[i])
if max_pos >= l - 1: return True
else: return False
class Solution {
public:
bool canJump(vector<int>& nums) {
int n = nums.size(), r = 0;
for (int i = 0; i < n; ++i) {
if (i <= r) {
r = max(r, i + nums[i]);
if (r >= n - 1) return true;
}
}
return false;
}
};