Leetcode 2038 Solution

This article provides solution to leetcode question 2038 (nearest-exit-from-entrance-in-maze)

https://leetcode.com/problems/nearest-exit-from-entrance-in-maze

Solution

class Solution: def nearestExit(self, maze: List[List[str]], entrance: List[int]) -> int: m = len(maze) n = len(maze[0])
q = collections.deque() visited = set()
q.append((entrance[0], entrance[1])) visited.add((entrance[0], entrance[1]))
step = 0 while q: s = len(q)
for _ in range(s): i, j = q.popleft()
for di, dj in [(0, 1), (0, -1), (1, 0), (-1, 0)]: ni, nj = i + di, j + dj
if not (0 <= ni < m and 0 <= nj < n): if (i, j) != (entrance[0], entrance[1]): return step else: continue
if maze[ni][nj] == '+': continue
if (ni, nj) in visited: continue
q.append((ni, nj)) visited.add((ni, nj)) step += 1
return -1