网络延迟时间

迪杰斯特拉的朴素算法流程:

邻接矩阵的方法

点击查看代码

class Solution {
public int networkDelayTime(int[][] times, int n, int k) {
//初始化一些必要参数
int INF = Integer.MAX_VALUE/2;
int[][] g = new int[n][n];
for(int[] row : g){
Arrays.fill(row, INF);
}
for(int[] t : times){
int x = t[0] - 1;
int y = t[1] - 1;
int wt = t[2];
g[x][y] = wt;
}
int[] dis = new int[n];
Arrays.fill(dis, INF);
dis[k-1] = 0;
boolean[] vis = new boolean[n];
int ans = 0;
while(true){
//开始执行dijsktra算法
//1.选择当前操作数
int x = -1;
for(int i = 0; i < n; i++){
if(!vis[i] && (x ==-1 || dis[i] < dis[x])){
x = i;
}
}
//2.更新结果
//x == -1说明结束了
if(x == -1) return ans;
//如果该节点不可达,那么会出现dis[x] == INF
if(dis[x] == INF) return -1; //正常更新dis
vis[x] = true;
ans = dis[x];
for(int y = 0; y < n; y++){
dis[y] = Math.min(dis[y], dis[x]+g[x][y]);
} }
}
}

##node节点多,edge少,适合用邻接表

点击查看代码
class Solution {
public int networkDelayTime(int[][] times, int n, int k) {
//初始化一些必要参数 //开一个邻接表
List<int[]>[] g = new ArrayList[n];
for(int i = 0; i < n; i++){
g[i] = new ArrayList<>();
}
for(int[] t : times){
int x = t[0] - 1;
int y = t[1] - 1;
int wt = t[2];
g[x].add(new int[]{y,wt});
}
//可以增加输出查看表内内容
for(List<int[]>a : g){
for(int[] b : a){
System.out.println(b[0]+1+","+b[1]);
}
} int INF = Integer.MAX_VALUE/2;
// int[][] g = new int[n][n];
// for(int[] row : g){
// Arrays.fill(row, INF);
// }
// for(int[] t : times){
// int x = t[0] - 1;
// int y = t[1] - 1;
// int wt = t[2];
// g[x][y] = wt;
// } int[] dis = new int[n];
Arrays.fill(dis, INF);
dis[k-1] = 0;
// boolean[] vis = new boolean[n];
int ans = 0; PriorityQueue<int[]> pq = new PriorityQueue<>((a,b)-> a[0]- b[0]);
pq.offer(new int[]{0, k-1});
int count = n;
while(!pq.isEmpty()){
int[] p = pq.poll();
int disP = p[0];
int x = p[1];
if(disP > dis[x]) continue;
ans = disP;
count--;
//更新距离
for(int[] e : g[x]){
int y =e[0];
int disY = e[1]+disP;
if(disY < dis[y]){
dis[y] = disY;
pq.offer(new int[]{disY, y});
}
}
}
return count != 0?-1:ans;
}
}

leetcode - 743的更多相关文章

  1. [LeetCode] 743. Network Delay Time 网络延迟时间

    There are N network nodes, labelled 1 to N. Given times, a list of travel times as directededges tim ...

  2. LeetCode 743. Network Delay Time

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

  3. Java实现 LeetCode 743 网络延迟时间(Dijkstra经典例题)

    743. 网络延迟时间 有 N 个网络节点,标记为 1 到 N. 给定一个列表 times,表示信号经过有向边的传递时间. times[i] = (u, v, w),其中 u 是源节点,v 是目标节点 ...

  4. ACM金牌选手整理的【LeetCode刷题顺序】

    算法和数据结构知识点图 首先,了解算法和数据结构有哪些知识点,在后面的学习中有 大局观,对学习和刷题十分有帮助. 下面是我花了一天时间花的算法和数据结构的知识结构,大家可以看看. 后面是为大家 精心挑 ...

  5. Dijkstra 算法说明与实现

    Dijkstra 算法说明与实现 作者:Grey 原文地址: 博客园:Dijkstra 算法说明与实现 CSDN:Dijkstra 算法说明与实现 问题描述 问题:给定出发点,出发点到所有点的距离之和 ...

  6. 【LeetCode】743. Network Delay Time 解题报告(Python)

    [LeetCode]743. Network Delay Time 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: ht ...

  7. leetcode bugfree note

    463. Island Perimeterhttps://leetcode.com/problems/island-perimeter/就是逐一遍历所有的cell,用分离的cell总的的边数减去重叠的 ...

  8. [LeetCode] Network Delay Time 网络延迟时间

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

  9. Swift LeetCode 目录 | Catalog

    请点击页面左上角 -> Fork me on Github 或直接访问本项目Github地址:LeetCode Solution by Swift    说明:题目中含有$符号则为付费题目. 如 ...

  10. LeetCode All in One题解汇总(持续更新中...)

    突然很想刷刷题,LeetCode是一个不错的选择,忽略了输入输出,更好的突出了算法,省去了不少时间. dalao们发现了任何错误,或是代码无法通过,或是有更好的解法,或是有任何疑问和建议的话,可以在对 ...

随机推荐

  1. asp.net core 3.0 发布单文件,进程外托管,复制视图

    <PropertyGroup> <TargetFramework>netcoreapp3.0</TargetFramework> <!--运行环境(发布单文件 ...

  2. .NET 响应式编程 System.Reactive 系列文章(一):基础概念

    .NET 响应式编程 System.Reactive 系列文章(一):基础概念 引言 在现代软件开发中,处理异步事件和数据流已经成为常见的需求,比如用户输入.网络请求.传感器数据等.这些数据流通常是无 ...

  3. GIMP 开源、免费,功能强大的图像编辑软件

    引言 万事开头难,打造个人网站,图片处理是必不可少的,老王的电脑还是 10 年前配置的,日常使用倒还流畅,但要是使用 Photoshop 就有些吃力,特别是越新的版本.然后,发现 GIMP 这个开源的 ...

  4. 前端实现 HTML 网页转 PDF 并导出🤓

    有个新需求,当点击[下载]按钮时,直接将当前 html页面下载为 PDF.通过 html2canvas + jsPDF 可实现PDF单页下载,甚至是多页下载,记录分享一下~ 最后有源码,可自取 htm ...

  5. Java中用Deque接口代替Stack接口完成栈功能

    之前在有需要用到栈功能的时候,都是通过使用Stack接口完成的,也就是: 1 Stack<T> stack = new Stack<>() 但今天突然发现,Java Doc里建 ...

  6. 记一次腾讯云轻量级服务器安装mysql配置完成后,外网无法访问问题

    一.配置信息正常 1.防火墙配置通过 2.mysql端口正常启动netstat -antlp | grep 3306 3.配置都正常,但是telnet访问不通超时Operation timed out ...

  7. Luogu P2540 NOIP2015提高组 斗地主 加强版 题解 [ 紫 ] [ 深搜 ] [ 剪枝 ]

    斗地主:一步一步推性质就能做出来的剪枝题. 这题思路和小木棒的剪枝思路极其相似,剪枝的角度都差不多. 其实大部分搜索剪枝题都是先观察性质,列出性质后选择几个比较关键且代码好写的性质进行剪枝,特别要注意 ...

  8. 乌龟冬眠箱湿度监控系统和AI辅助建议功能的实现

    家里小朋友养了一只小乌龟,到了冬天就冬眠了,早早地准备了一个冬眠箱,铺上椰土,在室温低于15℃时,就把小乌龟放到冬眠箱里,不一会儿它就自己钻入土中把自己藏了起来.按照惯例,需要每隔一定时间,对冬眠箱进 ...

  9. 【忍者算法】从入环点到相遇点:深入理解环形链表 II|LeetCode第142题 环形链表 II

    [忍者算法]从入环点到相遇点:深入理解环形链表 II|LeetCode第142题 问题升级:不止要找环,还要找入环点 在上一题中,我们讨论了如何判断链表是否有环.现在让我们更进一步:如果确定链表中有环 ...

  10. [BZOJ4671] 异或图 题解

    我能说什么!抽象了这! 看到 \(n\le 10\) 的黑题顿感大事不妙. 我们考虑设 \(f(i)\) 表示将 \(n\) 个点划分为至少 \(i\) 个连通块时的方案数.我们可以暴力枚举每个点在哪 ...