zoukankan      html  css  js  c++  java
  • 743. Network Delay Time

     
     
    题目来源:

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

     
    自我感觉难度/真实难度:
     
    题意:
     
    分析:
     
    自己的代码:
    class Solution:
        def networkDelayTime(self, times, N, K):
            """
            :type times: List[List[int]]
            :type N: int
            :type K: int
            :rtype: int
            """
            K-=1
            nodes=collections.defaultdict(list)
            for u,v,w in times:
                nodes[u-1].append((v-1,w))
            dist=[float('inf')]*N
            dist[K]=0
            done=set()
            for _ in range(N):
                smallest=min((d,i) for (i,d) in enumerate(dist) if i not in done)[1]
                for v,w in nodes[smallest]:
                    if v not in done and dist[smallest]+w<dist[v]:
                        dist[v]=dist[smallest]+w
                done.add(smallest) 
            return -1 if float('inf') in dist else max(dist)
    代码效率/结果:

    Runtime: 152 ms, faster than 83.77% of Python3 online submissions forNetwork Delay Time.

     
    优秀代码:
    class Solution:
        def networkDelayTime(self, times, N, K):
            """
            :type times: List[List[int]]
            :type N: int
            :type K: int
            :rtype: int
            """
            h = [(0, K)]
            res = 0
            reached = set()
            d = {}
            for u, v, w in times:
                if u not in d:
                    d[u] = []
                d[u].append([v, w])
            while h:
                t, n = heapq.heappop(h)
                if n not in reached:
                    res = t
                    reached.add(n)
                    if n in d:
                        for v, w in d[n]:
                            if v not in reached:
                                heapq.heappush(h, [t + w, v])
            if len(reached) < N:
                return -1
            return res

     优秀的结题报告,提供了三种超级棒的解答方法:https://blog.csdn.net/fuxuemingzhu/article/details/82862769

     

    第一次写图的代码,其实草稿纸推一推,发现也不是特别的难,不要畏惧

    代码效率/结果:
     
    自己优化后的代码:
     
    反思改进策略:

    1.对heapq的模块不熟悉,后面几天着重练习一下堆栈这一块的练习

    2.对dijstra算法不熟悉,希望把上面的模块背出来

    3.

    float('inf')表示正无穷

    float('-inf')表示负无穷

    4.

    dist=[float('inf')]*N

    初始化List简单的办法


  • 相关阅读:
    python可视化---axvspan()函数
    python可视化---axhline()函数
    Git 操作
    miui10 傻瓜式安装google框架方法
    python 制作一对一聊天
    Pyqt5+python+ErIC6+QT designer
    session 详细解析(转)
    #Week7 Neural Networks : Learning
    Multilayer Perceptron
    Advice for applying ML & ML System Design
  • 原文地址:https://www.cnblogs.com/captain-dl/p/10293460.html
Copyright © 2011-2022 走看看