网络延迟时间

题目描述:

有n个网络节点,标记为1到n。

给你一个列表times,表示信号经过有向边的传递时间。times[i] = [ui, vi, wi],其中ui是源结点,vi是目标节点,wi是一个信号从源节点传递到目标节点的时间。

现在,从某个节点K发出一个信号。需要多久才能使所有节点都收到信号?如果不能使所有节点收到信号,返回-1。

示例1:

输入:times = [[2, 1, 1], [2, 3, 1], [3, 4, 1]],n = 4, k = 2

输出:2

示例2:

输入:times = [[1, 2, 1]],n = 2,k = 1

输出:1

示例3:

输入:times = [[1, 2, 1]],n = 2, k = 2

输出:-1

提示:

  • 1 <= k <= n <= 100
  • 1 <= times.length <= 6000
  • times[i].length == 3
  • 1 <= ui, vi <= n
  • ui != vi
  • 0 <= wi <= 100
  • 所有(ui, vi)对都互不相同(即,不含重复边)

思路:DFS(一般不用于最短路径求解)、BFS、Dijkstra、Bellman-Ford、Floyed等

1、DFS:建图后直接DFS递归遍历图,但是这种方法不太适合求最短路径

python代码:

class Solution:def networkDelayTime(self, times: List[List[int]], n: int, k: int) -> int:# 方法一DFS# 建图mp = [{} for i in range(n+1)]for u, v, t in times:mp[u][v] = t# 记录结点最早收到信号的时间current_time = [-1 for i in range(n+1)]# DFSdef dfs(i, t):# 在t时间到达i结点if current_time[i] == -1 or t < current_time[i]:current_time[i] = tfor u, v in mp[i].items():dfs(u, t+v)dfs(k, 0)minT = -1for i in range(1, n+1):if current_time[i] == -1:return -1minT = max(minT, current_time[i])return minT

2、BFS,一般最短路径都用BFS解决

python代码:

class Solution:def networkDelayTime(self, times: List[List[int]], n: int, k: int) -> int:# 方法二BFS# 建图mp = [{} for i in range(n+1)]for u, v, t in times:mp[u][v] = t# 记录结点最早收到信号的时间current_time = [-1 for i in range(n+1)]current_time[k] = 0# 队列用于存放[结点,收到信号时间]s = deque([[k, 0]])while s:cur, t = s.popleft()for u, v in mp[cur].items():cur_t = t + vif current_time[u] == -1 or cur_t < current_time[u]:current_time[u] = cur_ts.append([u, cur_t])minT = -1for i in range(1, n+1):if current_time[i] == -1:return -1minT = max(minT, current_time[i])return minT

3、Dijkstra,该算法为使用贪心策略优化后的广度优先搜索(BFS),缺点是不能处理存在负权的图,如果是存在负权的图,可以使用Bellman-Ford算法

python代码:

class Solution:def networkDelayTime(self, times: List[List[int]], n: int, k: int) -> int:# 方法三Dijkstra# 建图mp = [{} for i in range(n+1)]for u, v, t in times:mp[u][v] = t# 记录结点最早收到信号的时间,设置最短路标记r = [ float('inf') for i in range(n+1)]s = [False for i in range(n+1)]r[k] = 0# 不断循环查找最短路径while True:# 查找最短路径cur, t = -1,  float('inf')for i, d in enumerate(r):if not s[i] and d < t:cur, t = i, dif cur == -1:break# 更新最短路径s[cur] = Truefor u, v in mp[cur].items():r[u] = min(r[u], t + v)minT = -1for i in range(1, n+1):minT = max(minT, r[i])return minT if minT !=  float('inf') else -1

力扣每日一题21.08.02网络延迟时间相关推荐

  1. 【JAVA】交错字符串——力扣每日一题(六)(2020.07.18)

    目录 题目:97. 交错字符串 思路 如果你从本文中学习到丝毫知识,那么请您点点关注.点赞.评论和收藏 大家好,我是爱做梦的鱼,我是东北大学大数据实验班大三的小菜鸡,非常渴望优秀,羡慕优秀的人,个人博 ...

  2. leetcode 力扣每日一题系列详解——总目录

    这是总目录,该系列持续更新中........ leetcode 力扣每日一题系列详解--总目录

  3. 【爬虫】力扣每日一题每天自动邮件提醒!!!

    使用python实现了一个力扣每日一题每天自动邮件提醒的小爬虫,小但实用!!! 文章目录 A.需求来源与分析 B.技术角度分析 C.具体分析步骤 1.接口协议分析 2.发邮件 3.写crontab放服 ...

  4. 力扣每日一题每天自动邮件提醒

    A.需求来源与分析 需求来源于生活,对于只是偶尔有兴趣做做题的我,力扣的每日一题对我一直有以下的不便: 太简单不想做,需要花太多时间的不想做,每天打开力扣其实只是想看一下是什么题,有意思才做. 看题需 ...

  5. 力扣每日一题:1720.解码异或后的数组 python异或操作

    1720.解码异或后的数组 https://leetcode-cn.com/problems/decode-xored-array/ 难度:简单 题目: 未知 整数数组 arr 由 n 个非负整数组成 ...

  6. LeetCode 力扣每日一题 488.祖玛游戏

    题目描述: 你正在参与祖玛游戏的一个变种. 在这个祖玛游戏变体中,桌面上有 一排 彩球,每个球的颜色可能是:红色 'R'.黄色 'Y'.蓝色 'B'.绿色 'G' 或白色 'W' .你的手中也有一些彩 ...

  7. 力扣每日一题——两数相加II

    发现做的题难度始终不高,今天Leecode给了一个稍微难一点的题目.(前两天没更是因为去拔牙了~~>_<~~) 给你两个 非空 链表来代表两个非负整数.数字最高位位于链表开始位置.它们的每 ...

  8. 2022.1.4 力扣-每日一题-猫和老鼠

    题目描述: 两位玩家分别扮演猫和老鼠,在一张 无向 图上进行游戏,两人轮流行动. 图的形式是:graph[a] 是一个列表,由满足 ab 是图中的一条边的所有节点 b 组成. 老鼠从节点 1 开始,第 ...

  9. 力扣每日一题——独一无二出现的次数

    难度:简单 题目: 给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数. 如果每个数的出现次数都是独一无二的,就返回 true:否则返回 false. 示例 1: 输入:arr = [1,2 ...

最新文章

  1. JS仿淘宝关闭二维码案例
  2. linux系统密码自动丢失,通过单用户模式找回linux系统丢失的密码
  3. NOIP2013Day1T3 表示只能过一个点
  4. php多线程swoole,swoole究竟能够多线程么_PHP开发框架教程
  5. 《Programming in Lua 3》读书笔记(十二)
  6. java conf_JAVA 解析、编辑nginx.conf详解
  7. node 存储过程_用Node.js操作跨平台数据库Firebird
  8. Android 自动扫描歌曲,Android扫描本地音乐文件开发案例分享
  9. 无法检测或故障_大众朗境挡位偶发缺失且无法启动
  10. SVC较好的介绍资料
  11. 作为前端程序员,你不能不知道的这个小技巧
  12. 数据可视化?不如用最经典的工具画最酷炫的图
  13. java中新建对象设为null 和new 一个对象的区别
  14. 泰坦尼克号幸存者预测所用函数
  15. 杭电操作系统实验三--- 实现模拟shell(arm架构华为云)
  16. 计量经济学及Stata应用 陈强 第十章工具变量法习题10.6
  17. 文件上传属性accept
  18. 软件测试工作中遇到的痛点,RPA解决方案:几个典型行业痛点工作场景
  19. mac下安装 mat内存分析工具
  20. Xft字体库:体系结构及用户指南(转)

热门文章

  1. Netapp takeover and giveback
  2. 2022 极术通讯-2022芯片设计的趋势:验证重于设计、Chiplet、上云
  3. Photoshop给草坪上的人物加上唯美的紫色霞光
  4. MySQL深入学习(一):数据库概述
  5. docker搭建samba服务smb网络磁盘共享
  6. 在dva中的effects实现callback
  7. matlab代数方程求解
  8. 项目踩坑之Echarts数据视图不更新问题
  9. Android 启动优化总结
  10. 为人父母是一场体验,也是一场修行