leetcode题解记录-743 网络延迟时间(python3)

题目

743 网络延迟时间

题目链接

官方题解

解题思路: Dijkstra算法

代码记录

class Solution:
    def networkDelayTime(self, times: List[List[int]], n: int, k: int) -> int:
    	SEEN ={}
    	UNSEEN = {i+1:float('inf') for i in range(n)}
    	UNSEEN[k]=0
    	while len(SEEN)<n:
            cur_u = list(UNSEEN.items())
            cur_u.sort(key= lambda x:x[1])
            for i in range(len(cur_u)):
                if cur_u[i][0] not in SEEN:
                    SEEN[cur_u[i][0]]=cur_u[i][1]
                    for link in times:
                        ui,vi,wi = link
                        if ui==cur_u[i][0]:
                            UNSEEN[vi] = min(UNSEEN[vi],SEEN[cur_u[i][0]]+wi)
                    break
    	s = list(SEEN.items())
    	s.sort(key= lambda x:x[1],reverse=True)
    	res =s[0][1]  if s[0][1]!=float('inf') else -1
    	return res

参考资料

通俗易懂理解——dijkstra算法求最短路径

Dijkstra算法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值