Minimum Obstacle Removal to Reach Corner LeetCode solution in Python
1class Solution:2def minimumObstacles(self, grid: List[List[int]]) -> int:3m, n = len(grid), len(grid[0])4q = [(0, 0, 0)]5dist = [[float("inf") for _ in range(n)] for _ in range(m)]67while q:8size = len(q)9for _ in range(size):10obs, x, y = heapq.heappop(q)11if dist[x][y] < float("inf"):12continue13obs += grid[x][y]14dist[x][y] = obs15if x + 1 < m:16heapq.heappush(q, (obs, x + 1, y))17if x > 0:18heapq.heappush(q, (obs, x - 1, y))19if y + 1 < n:20heapq.heappush(q, (obs, x, y + 1))21if y > 0:22heapq.heappush(q, (obs, x, y - 1))23return dist[m - 1][n - 1]