Nearest Exit from Entrance in Maze LeetCode solution in Python
1class Solution:2def nearestExit(self, maze: List[List[str]], entrance: List[int]) -> int:3x, y = entrance4m, n, infi = len(maze), len(maze[0]), int(1e5)5reached = lambda p, q: (not p == x or not q == y) and (6p == 0 or q == 0 or p == m - 1 or q == n - 17)89@lru_cache(None)10def dfs(i, j):11if i < 0 or j < 0 or i == m or j == n or maze[i][j] == "+":12return infi13if reached(i, j):14return 015maze[i][j] = "+"16ans = 1 + min(dfs(i + 1, j), dfs(i - 1, j), dfs(i, j + 1), dfs(i, j - 1))17maze[i][j] = "."18return ans1920ans = dfs(x, y)21return -1 if ans >= infi else ans