leetcode1334

Posted AsenYang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode1334相关的知识,希望对你有一定的参考价值。

 1 from heapq import heappush, heappop
 2 class Solution:
 3     def findTheCity(self, n: int, edges: List[List[int]], distanceThreshold: int) -> int:
 4         dis = [[float(inf)]*n for _ in range(n)]
 5         nei = collections.defaultdict(list)
 6         for i,j,x in edges:
 7             dis[i][j] = dis[j][i] = x
 8             nei[i].append(j)
 9             nei[j].append(i)
10         for i in range(n):
11             dis[i][i] = 0
12         
13         # Dijkstra
14         visited = set()
15         for i in range(n):
16             pool = [(0,i)]                                          # pool[j] = x:  d(i,j) = x    
17             while pool:
18                 x,j = heappop(pool)                                 # x = d(i,j)
19                 if (i,j) not in visited and x <= distanceThreshold: # early stop, if distance exceeds threshold
20                     visited.add((i,j))
21                     for k in nei[j]:
22                         dis[i][k] = min(dis[i][k], x+dis[j][k])     # dis(i,k) = min(dis(i,k), dis(i,j)+dis(j,k))
23                         heappush(pool, (dis[i][k], k))
24         cities = [[i,0] for i in range(n)]
25         for i in range(n):
26             for d in dis[i]:
27                 if d <= distanceThreshold:
28                     cities[i][1] += 1
29         result = sorted(cities,key=lambda x:[x[1],-x[0]])[0][0]
30         return result

 

算法思路:图,单源最短路径,Dijkstra算法。

计算每一个点到其他可达点的最小路径,再与阈值进行比较。统计每一个城市为起点,满足阈值范围内的可到达的其他城市的数量,再使用双条件排序,得到最终结果。

参考:https://leetcode.com/problems/find-the-city-with-the-smallest-number-of-neighbors-at-a-threshold-distance/discuss/490614/Python-3-Dijkstra-Algorithm

24-29行,是我自己的代码,比原帖中的写的要容易理解一些。

以上是关于leetcode1334的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode.1024 视频拼接

LeetCode810. 黑板异或游戏/455. 分发饼干/剑指Offer 53 - I. 在排序数组中查找数字 I/53 - II. 0~n-1中缺失的数字/54. 二叉搜索树的第k大节点(代码片段

LEETCODE 003 找出一个字符串中最长的无重复片段

Leetcode 763 划分字母区间

Codeforces 1334C - Circle of Monsters(差值取前缀和 / 贪心)

尝试使用 MicroStrategy 连接时 DB2 上的 SQLCODE -1334