code

 avatar
unknown
python
2 years ago
906 B
4
Indexable
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