给你一份旅游线路图,该线路图中的旅行线路用数组 paths
表示,其中 paths[i] = [cityAi, cityBi]
表示该线路将会从 cityAi
直接前往 cityBi
。请你找出这次旅行的终点站,即没有任何可以通往其他城市的线路的城市。
题目数据保证线路图会形成一条不存在循环的线路,因此恰有一个旅行终点站。
示例 1:
输入:paths = [["London","New York"],["New York","Lima"],["Lima","Sao Paulo"]] 输出:"Sao Paulo" 解释:从 "London" 出发,最后抵达终点站 "Sao Paulo" 。本次旅行的路线是 "London" -> "New York" -> "Lima" -> "Sao Paulo" 。
示例 2:
输入:paths = [["B","C"],["D","B"],["C","A"]] 输出:"A" 解释:所有可能的线路是: "D" -> "B" -> "C" -> "A". "B" -> "C" -> "A". "C" -> "A". "A". 显然,旅行终点站是 "A" 。
思路1(两次遍历):
因为是从citiesA到citiesB,对于最后的终点站,肯定是citiesB中的城市,所以可以用哈希表先遍历citiesB中的城市,再返回不在citiesA中的城市。
class Solution:
def destCity(self, paths: List[List[str]]) -> str:
citiesA = {path[0] for path in paths}
return next(path[1] for path in paths if path[1] not in citiesA)
思路2(一次遍历):
建立两个集合,删除 B中存在的A城市,如果b中未被删除的城市,很可能是终点站。
class Solution:
def destCity(self, paths: List[List[str]]) -> str:
set_a = set()
set_b = set()
for a, b in paths:
set_b.discard(a) # a 一定不是答案
if b not in set_a: # b 有可能是答案
set_b.add(b)
set_a.add(a)
return set_b.pop()
标签:1436,paths,set,Sao,python,Paulo,力扣,path,终点站
From: https://blog.csdn.net/m0_54373077/article/details/142751626