拿下技术面上传简历

有向图有 4 个节点 s、a、b、t,边和权值是:s→a = 1,s→b = 2,b→a = -2,a→t = 3,b→t = 10。用朴素 Dijkstra(每次从未确定的节点里取 dist 最小的那个标记为已确定,之后不再更新它的 dist)从 s 求到 t 的最短路。请说出它算出的 dist[t] 是多少、正确答案是多少、差在哪一步上,然后说明什么样的图 Dijkstra 才是安全的。

数据结构与算法图与搜索1-3 年知识点 1 个

面试官在考什么

判断候选人是真理解 Dijkstra 的贪心不变量,还是只背了"不能有负权"这句结论;同时看能不能自己构造出反例。

最短路

回答框架 · 前两步

  1. 朴素 Dijkstra 会输出 dist[t] = 4(走 s→a→t),而正确答案是 3(s→b→a→t)。
  2. 出错位置:a 在 dist = 1 时被优先弹出并 finalize;之后 b 松弛 a 得到 dist(a)=0 时,a 已标记确定被跳过,这个错误被继续传播到 t。

还有 3 条答案要点、 3 层追问、 4 个常见坑, 以及针对你简历的追问路径,在定制报告里。

上传简历,生成我的题库先看示例报告

延伸阅读

想看这个方向的整体准备路线? 进入「数据结构与算法」方向页

同一能力域的其他题