1
# Runtime: 1804 ms (Top 36.30%) | Memory: 15.4 MB (Top 76.73%)3
def minimumEffortPath(self, heights: List[List[int]]) -> int:6
m, n = len(heights), len(heights[0])7
visited = [[False] * n for _ in range(m)]10
effort, i, j = heappop(h)14
if i + 1 == m and j + 1 == n:15
return effort ## have reached the (m-1, n-1) cell17
ii, jj = i + di[k], j + dj[k]18
if 0 <= ii < m and 0 <= jj < n and not visited[ii][jj]:19
neffort = max(effort, abs(heights[i][j] - heights[ii][jj]))20
heappush(h, (neffort, ii, jj))21
return ## cell (m-1, n-1) not reachable, should never happen