条约游戏
1,先挑选出下一步中跳的范围最广的元素
2,每一步都如此
3,若若能过跳出数组或恰好跳到结尾,返回True,否则,返回False
class Solution(object):
def __init__(self):
self.c = 0
def canJump(self, nums):
"""
:type nums: List[int]
:rtype: bool
"""
if len(nums) <= 1:
return True
i = 0
t = len(nums)
while i <= t - 2:
if nums[i] == 0:
return False
c = 1
for x in range(i, i + nums[i] + 1):
if x + nums[x] >= t - 1:
return True
if x + nums[x] > i + nums[i]:
i = x
c = 0
if c:
i = i + nums[i]
return False