Dijkstra's algorithm具体:
有向图最短路径问题---Dijkstra算法(过程)_cjc雪狼的博客-CSDN博客
505. The Maze II

class Solution(object):
def shortestDistance(self, maze, start, destination):
des = tuple(destination)
r, c = len(maze), len(maze[0])
def go(x, y, dx, dy):
step = 0
while 0 <= x+dx < r and 0 <= y+dy < c and maze[x+dx][y+dy] == 0:
x += dx
y += dy
step += 1
return (x, y), step
heap = [(0, tuple(start))]
visited = {}
while heap:
distance, cur = heapq.heappop(heap)
if cur in visited and visited[cur] <= distance:
continue
if cur == des: return distance
visited[cur] = distance
for dx, dy in [(1, 0), (-1, 0), (0, 1), (0, -1)]:
nextCur, step = go(cur[0], cur[1], dx, dy)
heapq.heappush(heap, (distance+step, nextCur))
return -1
787. Cheapest Flights Within K Stops
There are n cities connected by m flights. Each fight starts from ci

本文介绍了Dijkstra算法在有向图最短路径问题中的应用,包括解决LeetCode中的题目505. The Maze II、787. Cheapest Flights Within K Stops和1631. Path With Minimum Effort等。同时,还讨论了743. Network Delay Time问题,探讨信号从特定节点传播至所有节点的最短时间。文章中提到了作者在解题过程中的思考和错误,加深了对DFS的理解。
最低0.47元/天 解锁文章

1713

被折叠的 条评论
为什么被折叠?



