给你一个非负整数数组
nums,你最初位于数组的第一个下标。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回
true;否则,返回false。
这种明显需要贪心算法,使用max_reach记录现在能到达最远的地方,然后如果超过了最长长度那就可以达到。如果i都大于最长长度了说明这个点无法到达就返回false了。
- 我们遍历每一个位置
- 如果这个位置都到不了 → 失败
- 每次更新:我最远能跳到哪?
- 只要最远能到达最后一位 →成功
class Solution: def canJump(self, nums: List[int]) -> bool: max_reach = 0 n = len(nums) for i in range(n): if i > max_reach: return False max_reach = max(max_reach, i + nums[i]) if max_reach >= n - 1: return True