先简单回顾一下,今天预计分析的题目:
题目连结:https://leetcode.com/problems/find-the-city-with-the-smallest-number-of-neighbors-at-a-threshold-distance/
题目叙述
测资的 Input/Output
首先利用 Floyd-Warshall 计算任两城市间的最短路径长。此处建立 distance
阵列用以纪录 DP 状态
# Initialize
distance = [ [ float('inf') ] * n for i in range(n) ]
for i in range(n): distance[i][i] = 0
for i in edges:
distance[i[0]][i[1]] = i[2]
distance[i[1]][i[0]] = i[2]
distance
# Floyd-Warshall
for i in range(n):
for j in range(n):
for k in range(n):
distance[j][k] = min(distance[j][i] + distance[i][k], distance[j][k])
# Count Neighbor
countNeighbor = [len(list(filter(lambda x: x <= distanceThreshold, distance[i]))) - 1 for i in range(n)]
return min(range(n), key=lambda x: (countNeighbor[x], -x))
class Solution:
def findTheCity(self, n: int, edges: List[List[int]], distanceThreshold: int) -> int:
# Initialize
distance = [ [ float('inf') ] * n for i in range(n) ]
for i in range(n): distance[i][i] = 0
for i in edges:
distance[i[0]][i[1]] = i[2]
distance[i[1]][i[0]] = i[2]
# Floyd-Warshall
for i in range(n):
for j in range(n):
for k in range(n):
distance[j][k] = min(distance[j][i] + distance[i][k], distance[j][k])
# Count Neighbor
countNeighbor = [len(list(filter(lambda x: x <= distanceThreshold, distance[i]))) - 1 for i in range(n)]
return min(range(n), key=lambda x: (countNeighbor[x], -x))
<<: Android Studio初学笔记-Day10-RadioButton
>>: 【DAY 11】SharePoint 後记- 为什麽要选择 SharePoint?
今天会开始来讲元件的部分~ 通用参数 height : 高度 width : 宽度 fg : 文字颜...
Process VS Thread 行程: 适合一次最多一个工作(unix shell) 优点: 缺...
“As Gregor Samsa awoke one morning from uneasy dr...
前言 今天来聊一个看起来不浪费的浪费。 多工会怎样 在我们的成长过程中,应该不只一次会听到前辈们的告...
在经历了传统 CSS 後,发现了一些 CSS 的缺点 全域污染 - CSS class name 会...