当前位置: 首页 > news >正文

力扣labuladong——一刷day84

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、力扣743. 网络延迟时间


前言

Dijkstra 算法(一般音译成迪杰斯特拉算法)无非就是一个 BFS 算法的加强版,它们都是从二叉树的层序遍历衍生出来的


一、力扣743. 网络延迟时间

class Solution {public int networkDelayTime(int[][] times, int n, int k) {List<int[]>[] graph = new LinkedList[n+1];for(int i = 1; i <= n; i ++){graph[i] = new LinkedList<int[]>();}for(int[] time : times){int from = time[0];int to = time[1];int w = time[2];graph[from].add(new int[]{to,w});}int[] result = dijkstra(k,graph);int res = 0;for(int i = 1; i < result.length; i ++){if(result[i] == Integer.MAX_VALUE){return -1;}res = Math.max(res,result[i]);}return res;}class State{int id;int distFromStart;public State(int id, int distFromStart){this.id = id;this.distFromStart = distFromStart;}}public int[] dijkstra(int start, List<int[]>[] graph){int n = graph.length;int[] result = new int[n];PriorityQueue<State> pq = new PriorityQueue<>((a,b)->{return a.distFromStart - b.distFromStart;});Arrays.fill(result,Integer.MAX_VALUE);result[start] = 0;pq.offer(new State(start,0));while(!pq.isEmpty()){State curV = pq.poll();int curId = curV.id;int curDistFromStart = curV.distFromStart;if(curDistFromStart > result[curId]){continue;}for(int[] next : graph[curId]){int nextId = next[0];int nextDist =  result[curId] + next[1];if(result[nextId] > nextDist){result[nextId] = nextDist;pq.offer(new State(nextId, result[nextId]));}}}return result;}
}
http://www.lryc.cn/news/273456.html

相关文章:

  • Linux环境vscode clang-format格式化:vscode clang format command is not available
  • 【KingbaseES】实现MySql函数WEEKS_BETWEEN
  • @Scheduled定时任务现状与改进
  • python+selenium爬虫笔记
  • 【LMM 009】MiniGPT-4:使用 Vicuna 增强视觉语言理解能力的多模态大模型
  • SpringBoot学习(三)-整合JDBC、Druid、MyBatis
  • 如何选择合适的语音呼叫中心?
  • 使用qtquick调用python程序
  • 【Axure高保真原型】树形表格_多选效果
  • 【Filament】加载obj和fbx模型
  • [USACO04OPEN] The Cow Lineup
  • 软件工具集合
  • C#利用openvino部署PP-TinyPose人体姿态识别
  • MindSpore Serving与TGI框架 の 对比
  • 两阶段提交协议三阶段提交协议
  • 6-Docker Compose-tomcat application(指定官方镜像)
  • 宝塔安装的imagemagick不能用,必须自己手动安装
  • 解决在test以外的目录下导入junit无效
  • docker 在线安装mysql 8.0.21版本
  • WPF DatePicker与Calendar的使用和样式修改
  • 从0开始python学习-40.通过正则表达式/json进行接口关联
  • 【React系列】高阶组件
  • 听GPT 讲Rust源代码--src/tools(38)
  • .NET C# 如何获取object对象的数据
  • 使用IDEA创建使用 JDK8 的 2.x.x 版本的 Spring Boot 项目以及 Spring Boot 项目如何修改JDK版本
  • 游戏服务器整体架构思考
  • labelme 标注的数据集转化为Mask-Rcnn适用的数据集
  • x-cmd pkg | tig - git 文本模式界面
  • 信息论与编码期末复习——概念论述简答题(一)
  • [Kubernetes]4. 借助腾讯云TKE快速创建Pod、Deployment、Service部署k8s项目