class Solution:
def canJump(self, nums: List[int]) -> bool:
if len(nums) == 1:
return True
t = len(nums) - 1
checkList = [False for i in range(t + 1)]
checkList[0] = True
queue = [0]
resJump = dict()#list()
for i, elem in zip(range(len(nums) - 1, -1, -1), nums):
resJump[i] = [i + bet for bet in range(1, elem + 1) if (i + bet < len(nums))]
#resJump.append([i + bet for bet in range(1, elem + 1) if (i + bet < t + 1)])
print(resJump)
while len(queue) > 0:
v = queue.pop(0)
for neighbor in resJump[v]:
if not checkList[neighbor]:
if neighbor == t:
return True
queue.append(neighbor)
checkList[neighbor] = True
return False