class Solution:
# time& space O(N)
def destCity(self, paths: List[List[str]]) -> str:
if len(paths) == 1 :
return paths[0][1]
# step1, set up start_dic
start_d = dict()
# step2, iterate path in paths, check if destination in the path is a start in another path
for path in paths:
start_d[path[0]] = path
# if not exist, return
for path in paths:
dest = path[1]
if dest not in start_d:
return dest
2nd solution
# main idea to use set and remove items in desti set that appeared in start set
class Solution:
# time& space O(N)
def destCity(self, paths: List[List[str]]) -> str:
return (set([path[1] for path in paths]) - set([path[0] for path in paths])).pop()