题目

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

题解

有向图,求源点到所有顶点的最短距离,经典 Dijkstra 算法,只要知道思路就能实现,然而每次思路都要重新查一遍,过几个月又忘了。。

Dijkstra 算法

1)Dijkstra 算法必须指定一个源点
2)生成一个源点到各个点的最小距离表,一开始只有一条记录,即原点到自己的最小距离为0,源点到其他所有点的最小距离都为正无穷大
3)从距离表中拿出没拿过记录里的最小记录,通过这个点发出的边,更新源点到各个点的最小距离表,不断重复这一步
4)源点到所有的点记录如果都被拿过一遍,过程停止,最小距离表得到了

草稿

实现的时候,我一开始有个更新细节写错了(line 29),照着三叶的 答案 对比了一下,改过来了,才 AC。

另外,Dijkstra 是可以用 heap 做优化的,详见答案,有空再优化下。

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;}
}

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

  1. 743. Network Delay Time

    743. Network Delay Time 思路:其实就是求从一点出发到各个点的距离,最大网络延迟就是一个点到各个点的最大距离. 使用狄杰斯特拉求出一个点到各个点的距离,然后取最大那个值. 难点: ...

  2. LeetCode #743 Network Delay Time

    题目 There are N network nodes, labelled 1 to N. Given times, a list of travel times as directed edges ...

  3. Docker Issue Network Delay(自定义网络启动会延迟大概40秒!)

    Docker Issue Network Delay 在用自定义Docker网络跑容器的时候发现一个问题:Docker的自定义网络启动会延迟大概40秒! 换句话说就是: 如果你使用自定义网络在一个容器 ...

  4. LeetCode 743. Network Delay Time

    原题链接在这里:https://leetcode.com/problems/network-delay-time/ 题目: There are N network nodes, labelled 1  ...

  5. Dijkstra算法求最短路径(附leetcode 743 网络延迟问题)

    算法步骤:(设图的储存方式为邻接矩阵) 设置[dist数组](distance的缩写),dist[x]=y表示从[源点]到[x]的最短距离为y 设置[visited数组],visited[i]=Tru ...

  6. 743.网络延迟时间

    743. 网络延迟时间(https://leetcode-cn.com/problems/network-delay-time/) 有 n 个网络节点,标记为 1 到 n. 给你一个列表 times, ...

  7. 743. 网络延迟时间 有 n 个网络节点,标记为 1 到 n。 给你一个列表 times,表示信号经过 有向 边的传递时间。 times[i] = (ui, vi, wi),其中 ui 是源节点,

    网络延迟时间 有 n 个网络节点,标记为 1 到 n. 给你一个列表 times,表示信号经过 有向 边的传递时间. times[i] = (ui, vi, wi),其中 ui 是源节点,vi 是目标 ...

  8. 【最短路问题】leetcode743. 网络延迟时间

    743. 网络延迟时间 问题可转换为: 求k点到其他所有点最短路径的最大值 邻接矩阵建图后,用Floyd算法 class Solution { public:int dp[101][101];void ...

  9. Network Delay Simulator模拟延时、带宽甚至丢包率,更精确地模拟慢网速环境

    Network Delay Simulator 免费软件,下载地址 .我正在使用的,三种之中功能最强大,监听Network Interface Card (NIC)和TCP/IP stack之间的网络 ...

最新文章

  1. 这样出ORACLE的面试题
  2. windows系统numpy的下载与安装教程
  3. 【php】目录操作 文件操作
  4. 蚂蚁金服成立科学智囊团,机器学习之父Michael I.Jordan担任主席
  5. java连接各数据库的语句
  6. 跑腿同学校园小程序源码-已测试
  7. 利用高级筛选功能巧妙删除Excel的重复记录
  8. Java 操作MySql Blob 字段
  9. 执行Hexo d报错Spawn failed, 以及OpenSSL SSL_read: Connection was reset, errno 10054
  10. 前端面试常问的问题(必须掌握)
  11. python什么意思g_python字符串%%g的格式是什么?
  12. cada0图纸框_按1:1画图后如何出A0图纸图框怎么设置?
  13. [数据集][VOC]老鼠数据集voc格式3001张
  14. 根据计算机配置设置bios,电脑如何进入bios设置
  15. lq到底是什么意思_LQ网络用语是什么意思?
  16. pyecharts画饼形图,圆形图,环形图(含百分比显示)【python干货】
  17. C-021.字符类型char 以及ASCII对照表
  18. linux节点状态 slurm,linux – 为什么slurm中的作业在TensorFlow脚本中无限期冻结?
  19. 2021日照市地区高考成绩排名查询,日照高中高考成绩排名,2021年日照各高中高考成绩排行榜...
  20. 代理模式 静态代理、JDK动态代理、Cglib动态代理

热门文章

  1. DenseNet详述
  2. ADO学习(七)ADOX相关知识
  3. 终于把CString转化为char*了
  4. Socket之TCP客户端【Python】
  5. Amazon上最畅销的「操作系统书」有哪些?
  6. 在业务系统中寻求技术含量
  7. 腾讯----小Q的歌单
  8. LeetCode 打家劫舍问题
  9. 未来已来,音视频江湖再起波澜
  10. 音视频技术开发周刊 | 148