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简单的办法


posted @ 2019-01-19 22:09  dgi  阅读(224)  评论(0编辑  收藏  举报