日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

leetcode 743. Network Delay Time | 743. 网络延迟时间(邻接矩阵,Dijkstra 算法)

發(fā)布時(shí)間:2024/2/28 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 leetcode 743. Network Delay Time | 743. 网络延迟时间(邻接矩阵,Dijkstra 算法) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題目

https://leetcode.com/problems/network-delay-time/

題解

有向圖,求源點(diǎn)到所有頂點(diǎn)的最短距離,經(jīng)典 Dijkstra 算法,只要知道思路就能實(shí)現(xiàn),然而每次思路都要重新查一遍,過幾個(gè)月又忘了。。

Dijkstra 算法

1)Dijkstra 算法必須指定一個(gè)源點(diǎn)
2)生成一個(gè)源點(diǎn)到各個(gè)點(diǎn)的最小距離表,一開始只有一條記錄,即原點(diǎn)到自己的最小距離為0,源點(diǎn)到其他所有點(diǎn)的最小距離都為正無窮大
3)從距離表中拿出沒拿過記錄里的最小記錄,通過這個(gè)點(diǎn)發(fā)出的邊,更新源點(diǎn)到各個(gè)點(diǎn)的最小距離表,不斷重復(fù)這一步
4)源點(diǎn)到所有的點(diǎn)記錄如果都被拿過一遍,過程停止,最小距離表得到了

草稿

實(shí)現(xiàn)的時(shí)候,我一開始有個(gè)更新細(xì)節(jié)寫錯(cuò)了(line 29),照著三葉的 答案 對(duì)比了一下,改過來了,才 AC。

另外,Dijkstra 是可以用 heap 做優(yōu)化的,詳見答案,有空再優(yōu)化下。

class Solution {public int networkDelayTime(int[][] times, int n, int k) {int[][] edge = new int[n + 1][n + 1];for (int i = 0; i <= n; i++) {Arrays.fill(edge[i], Integer.MAX_VALUE);edge[i][i] = 0;}for (int[] t : times) {edge[t[0]][t[1]] = t[2];}int[] dist = new int[n + 1];boolean[] visited = new boolean[n + 1];for (int i = 0; i <= n; i++) {dist[i] = edge[k][i];}visited[k] = true;int count = 1;while (count < n) {int idx = 0;for (int i = 1; i <= n; i++) {if (!visited[i] && dist[idx] > dist[i]) idx = i;}visited[idx] = true;count++;for (int i = 1; i <= n; i++) { // k->idx->iif (!visited[i] && edge[idx][i] != Integer.MAX_VALUE && dist[idx] + edge[idx][i] < dist[i]) {dist[i] = dist[idx] + edge[idx][i]; // k->i = k->idx(=dist[idx]) + idx->i}}}int result = 0;for (int i = 1; i <= n; i++) {result = Math.max(result, dist[i]);}return result == Integer.MAX_VALUE ? -1 : result;} }

總結(jié)

以上是生活随笔為你收集整理的leetcode 743. Network Delay Time | 743. 网络延迟时间(邻接矩阵,Dijkstra 算法)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。