1631. Path With Minimum Effort
Содержание
class Solution:
def minimumEffortPath(self, heights: List[List[int]]) -> int:
m, n = len(heights), len(heights[0])
dist = [[inf] * n for _ in range(m)]
dist[0][0] = 0
dirs = (-1, 0, 1, 0, -1)
q = [(0, 0, 0)]
while q:
t, i, j = heappop(q)
for a, b in pairwise(dirs):
x, y = i + a, j + b
if (
0 <= x < m
and 0 <= y < n
and (d := max(t, abs(heights[i][j] - heights[x][y]))) < dist[x][y]
):
dist[x][y] = d
heappush(q, (d, x, y))
return int(dist[-1][-1])