思路:贪心算法,尽可能达到最远的位置(因为如果可以达到某个位置,一定可以达到之前的位置)
class Solution:
def canJump(self, nums: List[int]) -> bool:
max_i = 0
for i ,jump in enumerate(nums):
if max_i>=i and (i + jump) > max_i:
max_i = i + jump
return max_i >= i
这里的return max_i >= i,注意可以换成return max_i >= len(nums)-1.
首先初始化当前能到达的最远距离,i为当前位置,jump是当前位置的跳数
if判断如果当前位置到达,并且当前位置+跳数>最远位置
然后更新最远能到达位置