【LeetCode: 743. 网络延迟时间 + Dijkstra】

embedded/2024/11/27 20:49:05/

在这里插入图片描述

🚀 算法题 🚀

🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,CSDN-Java领域优质创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯

🚀 算法题 🚀

在这里插入图片描述

在这里插入图片描述

🍔 目录

    • 🚩 题目链接
    • ⛲ 题目描述
    • 🌟 求解思路&实现代码&运行结果
      • Dijkstra
        • 🥦 求解思路
        • 🥦 实现代码
        • 🥦 运行结果
    • 💬 共勉

🚩 题目链接

  • 743. 网络延迟时间

⛲ 题目描述

有 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) 对都 互不相同(即,不含重复边)

🌟 求解思路&实现代码&运行结果


Dijkstra_62">⚡ Dijkstra

🥦 求解思路
  1. 先通过堆优化 Dijkstra 算法求最短路,然后从所有最短路中取 max。就是从 k 点出发,到其他点 x 的最短距离的最大值。
  2. 有了基本的思路,接下来我们就来通过代码来实现一下。
🥦 实现代码
java">class Solution {public int networkDelayTime(int[][] times, int n, int k) {int[][] w = new int[110][110];for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++) {w[i][j] = w[j][i] = i == j ? 0 : Integer.MAX_VALUE / 2;}}for (int[] t : times) {int u = t[0], v = t[1], c = t[2];w[u][v] = c;}int[] dist = new int[110];boolean[] flag = new boolean[110];Arrays.fill(dist, Integer.MAX_VALUE / 2);Arrays.fill(flag, false);dist[k] = 0;PriorityQueue<int[]> queue = new PriorityQueue<>((a, b) -> a[1] - b[1]);queue.add(new int[] { k, 0 });while (!queue.isEmpty()) {int[] t = queue.poll();int id = t[0], dis = t[1];if (flag[id])continue;if (dis > dist[id])continue;flag[id] = true;for (int i = 1; i <= n; i++) {if (dist[i] > dist[id] + w[id][i]) {dist[i] = dist[id] + w[id][i];queue.add(new int[] { i, dist[i] });}}}int ans = 0;for (int i = 1; i <= n; i++) {ans = Math.max(ans, dist[i]);}return ans >= Integer.MAX_VALUE / 2 ? -1 : ans;}
}
🥦 运行结果

在这里插入图片描述


💬 共勉

最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉!

在这里插入图片描述

在这里插入图片描述


http://www.ppmy.cn/embedded/141000.html

相关文章

网络爬虫——分布式爬虫架构

分布式爬虫在现代大数据采集中是不可或缺的一部分。随着互联网信息量的爆炸性增长&#xff0c;单机爬虫在性能、效率和稳定性上都面临巨大的挑战。分布式爬虫通过任务分发、多节点协作以及结果整合&#xff0c;成为解决大规模数据抓取任务的核心手段。 本节将从 Scrapy 框架的…

〔 MySQL 〕之内置函数

目录 1 日期函数 ​编辑 2 字符串函数​编辑 3 数学函数 4 其它函数 5 实战OJ ● 查找字符串中逗号出现的次数_牛客题霸_牛客网 1 日期函数 ● 获得年月日&#xff1a; select current_date();----------------| current_date() |----------------| 2017-11-19 |--------…

基于IPMI的服务器硬件监控指标解读

在现代化数据中心中&#xff0c;服务器的稳定运行对于保障业务连续性至关重要。为了实时掌握服务器的健康状况&#xff0c;运维团队需要借助高效的监控工具。监控易作为一款功能强大的监控软件&#xff0c;支持使用IPMI&#xff08;Intelligent Platform Management Interface&…

AI加持,华为全屋智能品牌升级为“鸿蒙智家”

1.传统智能家居的困境&#xff1a;从便利到繁琐 近年来&#xff0c;智能家居因其便捷性和科技感受到消费者的青睐。然而&#xff0c;随着用户需求的多样化&#xff0c;传统智能家居的弊端逐渐显现&#xff1a; 设备连接复杂&#xff0c;品牌间兼容性不足&#xff0c;用户不得不…

前端:base64的作用

背景 项目中发现&#xff0c;img标签中写src&#xff0c;读取一个png图片&#xff0c;只有16kb&#xff0c;速度特别慢。 解决办法&#xff0c;将图片转为base64&#xff0c;然后读取&#xff0c;速度特别快17ms就解决。 定义&#xff1a;base64是一种基于64个可打印字符(A-…

AWS IAM 及其功能

IAM 代表身份和访问管理&#xff0c;可帮助控制谁可以进入云、访问 AWS 资源以及进入后可以做什么。 身份&#xff1a; IAM 帮助管理可以与 AWS 资源交互的身份&#xff08;如用户名或服务帐户&#xff09;。 访问&#xff1a;它决定每个身份可以在 AWS 服务上执行哪些操作&am…

2024年9月中国电子学会青少年软件编程(Python)等级考试试卷(六级)答案 + 解析

一、单选题 1、下面代码运行后出现的图像是&#xff1f;&#xff08; &#xff09; import matplotlib.pyplot as plt import numpy as np x np.array([A, B, C, D]) y np.array([30, 25, 15, 35]) plt.bar(x, y) plt.show() A. B. C. D. 正确答案&#xff1a;A 答案…

【mac】终端左边太长处理,自定义显示名称(terminal路径显示特别长)

1、打开终端 2、步骤 &#xff08;1&#xff09;修改~/.zshrc文件 nano ~/.zshrc&#xff08;2&#xff09;添加或修改PS1&#xff0c;我是自定义了名字为“macminiPro” export PS1"macminiPro$ "&#xff08;3&#xff09;使用 nano: Ctrl o &#xff08;字母…