class Solution:
def canJump(self, nums: List[int]) -> bool:
if len(nums) == 1:
return True
self.flag = 0
self.backtrack(0, nums[:])
if self.flag == 1:
return True
else:
return False
def backtrack(self, pos, nums):
if pos >= len(nums)-1:
self.flag = 1
return
if nums[pos] == 0:
return
choose = nums[pos]
for i in range(choose, 0, -1):
pos += i
self.backtrack(pos, nums[:])
pos -= i
return
class Solution:
def canJump(self, nums: List[int]) -> bool:
pos = 0
n = len(nums)
for i in range(n):
if i <= pos:
pos = max(pos, i + nums[i])
if pos >= n-1:
return True
return False