用 Python 编写程序以正确的顺序查找机场?
假设我们有一个航班列表,以 [出发地,目的地] 对的形式列出。该列表是随机排列的;我们必须以正确的顺序找到所有访问过的机场。如果有多个有效行程,则首先返回按字典顺序最小的行程。
因此,如果输入为 flights = [["Mumbai", "Kolkata"],["Delhi", "Mumbai"],["Kolkata", "Delhi"] ],则输出为 ['Delhi', 'Mumbai', 'Kolkata', 'Delhi']
为了解决这个问题,我们将遵循以下步骤
ins := 一个空的 map
outs := 一个空的 map
adj_list := 一个空的map
定义一个函数 dfs() 。这将需要 airport
当 outs[airport] 不为空时,执行
nxt := adj_list[airport] 的大小 - outs[airport]
outs[airport] := outs[airport] - 1
在 ans 末尾插入 airport
定义一个名为 solved() 的方法,这将需要 flights
对于 flights 中的每个起始结束对 s、e,执行
在 adj_list[s] 末尾插入 e
outs[s] := outs[s] + 1
ins[e] := ins[e] + 1
对于 adj_list 所有值列表中的每个 l,执行
对列表 l 进行排序
start := null, end := null
对于 adj_list 所有键列表中的每个 airport,执行
如果 outs[airport] - ins[airport] 与 1 相同,则
如果 start 不为 null,则
返回
start := airport
否则outs[airport] - ins[airport] 与 -1 相同,则
如果 end 不为空,则
返回
end := airport
否则,当 outs[airport] - ins[airport] 不等于 0 时,则
返回
如果 start 不为空,则 start := start,否则 adj_list 中所有键的最小值
ans := a new list
dfs(start)
返回逆 ans
从主方法调用solve(flights)
示例
from collections import defaultdict class Solution: def solve(self, flights): ins = defaultdict(int) outs = defaultdict(int) adj_list = defaultdict(list) for s, e in flights: adj_list[s].append(e) outs[s] += 1 ins[e] += 1 for l in adj_list.values(): l.sort() start = None end = None for airport in adj_list.keys(): if outs[airport] - ins[airport] == 1: if start: return start = airport elif outs[airport] - ins[airport] == -1: if end: return end = airport elif outs[airport] - ins[airport] != 0: return start = start if start else min(adj_list.keys()) ans = [] def dfs(airport): while outs[airport]: nxt = len(adj_list[airport]) - outs[airport] outs[airport] -= 1 dfs(adj_list[airport][nxt]) ans.append(airport) dfs(start) return ans[::-1] ob = Solution() flights = [ ["Mumbai", "Kolkata"], ["Delhi", "Mumbai"], ["Kolkata", "Delhi"] ] print(ob.solve(flights))
输入
[["Mumbai", "Kolkata"], ["Delhi", "Mumbai"], ["Kolkata", "Delhi"] ]
输出
['Delhi', 'Mumbai', 'Kolkata', 'Delhi']
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

