leetcode每日一题743. 网络延迟时间20210802

  • Post author:
  • Post category:其他




题目

https://leetcode-cn.com/problems/network-delay-time/

在这里插入图片描述



答案

我自己写的答案,超时了ORZ。用的是深度优先遍历(写树习惯了,拿到手直接DFS)。然后就超时,想着琢磨一下广度优先遍历,但是有点问题,最终还是放弃了看的答案。

看到这个题的时候我知道是图,但是忘记最短路径算法怎么写的了ORZ。

class Solution {
    public int networkDelayTime(int[][] times, int n, int k) {
        final int INF = Integer.MAX_VALUE / 2;
        int[][] g = new int[n][n];
        for (int i = 0; i < n; ++i) {
            Arrays.fill(g[i], INF);
        }
        for (int[] time : times) {
            g[time[0]-1][time[1]-1] = time[2];
        }
        int[] dist = new int[n];
        Arrays.fill(dist, INF);
        dist[k-1] = 0;
        boolean[] used = new boolean[n];
        for (int i = 0; i < n; ++i) {
            int x = -1;
            for (int y = 0; y < n; ++y) {
                if (!used[y] && (x == -1 || dist[y] < dist[x])) {
                    x = y;
                }
            }
            used[x] = true;
            for (int y = 0; y < n; ++y) {
                dist[y] = Math.min(dist[y], dist[x] + g[x][y]);
            }
        }
        int ans = Arrays.stream(dist).max().getAsInt();
        return ans == INF ? -1 : ans;
    }


    public static void main(String[] args) {
        int[][] times = new int[][]{{1,2,1}, {2,3,7}, {1,3,4}, {2,1,2}};
        int n = 3;
        int k = 2;
        new Solution().networkDelayTime(times, n, k);
    }
}



总结

其实这个答案我好像还没吃透,还是要再看一下。

超出自己能力知识范围的不要硬抗,你不知道的就是不知道,站在前人肩膀上一辈子才能突破一点点,想靠你几天基本不可能的。所以2个小时一直超时并且没有思路的请放弃。学会放弃也很重要。



版权声明:本文为Kai_Chan原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。