Minimum Cost to Make at Least One Valid Path in a Grid LeetCode solution in Python
1class Solution:2def minCost(self, grid: List[List[int]]) -> int:3changes = [4[float("inf") for _ in range(len(grid[0]))] for _ in range(len(grid))5]6heap = [(0, 0, 0)]7dirn = [(0, 1), (0, -1), (1, 0), (-1, 0)]8while heap:9dist, r, c = heapq.heappop(heap)10if (11r >= len(grid)12or r < 013or c >= len(grid[0])14or c < 015or changes[r][c] <= dist16):17continue18if r == len(grid) - 1 and c == len(grid[0]) - 1:19return dist20changes[r][c] = dist21for i in range(1, 5):22if i == grid[r][c]:23heapq.heappush(heap, (dist, r + dirn[i - 1][0], c + dirn[i - 1][1]))24else:25heapq.heappush(26heap, (dist + 1, r + dirn[i - 1][0], c + dirn[i - 1][1])27)28return dist