Algorithm
Jump Game III
Solution
from collections import deque
class Solution:
def canReach(self, arr: list[int], start: int) -> bool:
q = deque([start])
visited = set([start])
while q:
curr = q.popleft()
if arr[curr] == 0:
return True
for next_idx in (curr + arr[curr], curr - arr[curr]):
if 0 <= next_idx < len(arr) and next_idx not in visited:
visited.add(next_idx)
q.append(next_idx)
return FalseTime Complexity
O(N)
Space Complexity
O(N)
