题目解析
本题是“单源最短路”问题,可以使用dijkstra算法解题。
如果你还不了解dijkstra算法,可以看下:LeetCode - 743 网络延迟时间-CSDN博客
本题的变化在于:每个位置都加入了方向维度
比如当前位置是 u,当前行进方向是 d,下一个位置是 v,但是 u -> v 的方向是 k
- 若 d == k,即行进方向和 u->v 的方向相同,则 u -> v 只需要花费 1 个单位时间
- 若 d ≠ k,则行进方向和 u->v 的方向不同,此时需要改变行进方向,则 u -> v 只需要花费 2 个单位时间
因此,我们定义 vis,dist 数组时,都需要加入方向维度,比如:
- vis[位置编号][行进方向]
- dist[位置编号][行进方向]
遍历出 u 的上下左右的相邻位置 v 后,如果 u -> v 的方向