中级算法题(图的邻接矩阵+Dijkstra算法)

题目:743. 网络延迟时间

743. 网络延迟时间

图的实战

​ 这道题是找一条最长时间的路径。

一、猜想:dfs是否可行

​ 把它理解为一个有向图,找出时间最长路径,但是有一个问题,题目给出的数据结构是数组,没有二叉树和图的关系结构,所以在dfs时会碰到如何用代码实现深度搜索各条路径的问题。

二、图的复习

​ 图分为无向图和有向图。

2.1邻接表和邻接矩阵

​ 两种常用的存储方式。

2.2迪杰斯特拉算法

​ 用于求最短路径。

​ 每次遍历到起始点距离最近且未访问过的顶点的邻接节点,直到拓展到终点为止。

​ 提示引入数组,找最短路径。不断更新数组中到达各节点的最短距离,找到一个后再去以找到的节点为起始点去更新数组,找下一个最短距离。

三、实战代码

3.1邻接矩阵+迪杰斯特拉算法

​ 借鉴了大佬的写法。

class Solution {
   
    public int networkDelayTime(int[][] times, int n, int k) {
   
        //INF表示 图中的无穷,就是不可达。
        final int INF = Integer.MAX_VALUE / 2;

        // 邻接矩阵存储边信息
        // g为邻接矩阵
        /*
       y\x 0 1 2 3 4 5 
        0 INF
        1 INF
        2 INF
        3 INF
        4
        5
        */
        int[][] g = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值