思路:每次更新最远能够跳到的距离
举个例子:【2,3,1,1,4,1】
第一轮:站在第一位,最远能跳到第三位
第二轮:从第二位到第三位遍历找到能条最远的位置,结果是第二位能跳最远,到第五位
第三轮:从第三位到第五位遍历能跳最远的位置....
.....
代码:
class Solution:
def canJump(self, nums: List[int]) -> bool:
n = len(nums) - 1
max_len = 0
next_max_len = nums[0]
while(max_len != next_max_len):
if next_max_len >= n:break
temp = next_max_len
for i in range(max_len+1, next_max_len+1):
next_max_len = max(next_max_len, nums[i]+i)
max_len = temp
if next_max_len >= n: return True
else: return False