首页 > 其他 > 详细

leetcode——743.网络延迟时间

时间:2020-06-20 11:38:32      阅读:65      评论:0      收藏:0      [点我收藏+]
private final static int MAXVALUE = 1000;
    public int networkDelayTime(int[][] times, int N, int K) {
        boolean[] visited = new boolean[N+1];

        int[][] time = new int[N+1][N+1];
        //在更新时间之前,要先把每一个路径上的时间都初始化为MAXVALUE
        for(int[] row:time){
            //如何填充整个数组的值来着????
            Arrays.fill(row,MAXVALUE);
        }
        for(int i = 0;i<times.length;i++){
            time[times[i][0]][times[i][1]] = times[i][2];      //邻接矩阵更新完毕
        }
        //接下来就是更新并寻找最短路径了
        int minIndex = K;
        visited[K] = true;
        int[] path = new int[N+1];
        for(int i = 1;i<N+1;i++){
            path[i]  = time[K][i];//存储K点到其他个点的距离,即time[K][i]
        }
        path[K] = 0;
        for(int i = 1;i<N+1;i++){
            int min = MAXVALUE;
            for(int j = 1;j<N+1;j++){
                if(!visited[j] && path[j]<min){
                    min = path[j];
                    minIndex = j;
                }
            }
            visited[minIndex] = true;
            for(int j = 1;j<N+1;j++){
                if(!visited[j] && (min + time[minIndex][j] < path[j])){
                    path[j] = min + time[minIndex][j];
                }
            }
        }
        int dis = 0;
        for(int i = 1;i<N+1;i++){
            if(path[i] == MAXVALUE){
                return -1;
            }
            dis = Math.max(dis,path[i]);
        }
        return dis;
    }

技术分享图片

 

 

我还是一时没反应过来应该用迪杰斯特拉算法求最短路径的,看了别人的答案然后自己又写了一遍,好歹算是顺利,对迪杰斯特拉算法的理解又更加深了一次……

 

——2020.6.18

leetcode——743.网络延迟时间

原文:https://www.cnblogs.com/taoyuxin/p/13167812.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!