-
-
Notifications
You must be signed in to change notification settings - Fork 48
Expand file tree
/
Copy path0332-reconstruct-itinerary.py
More file actions
31 lines (25 loc) · 930 Bytes
/
0332-reconstruct-itinerary.py
File metadata and controls
31 lines (25 loc) · 930 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# time complexity: O(elog(e/v))
# space complexity: O(v+e)
from collections import defaultdict
from typing import List
class Solution:
def findItinerary(self, tickets: List[List[str]]) -> List[str]:
adjList = defaultdict(list)
result = []
for u, v in tickets:
adjList[u].append(v)
for flights in adjList.values():
flights.sort(reverse = True)
def dfs(original):
nonlocal result
while adjList[original]:
nextFlight = adjList[original].pop()
dfs(nextFlight)
result.append(original)
dfs('JFK')
return result[::-1]
tickets = [["MUC", "LHR"], ["JFK", "MUC"], ["SFO", "SJC"], ["LHR", "SFO"]]
print(Solution().findItinerary(tickets))
tickets = [["JFK", "SFO"], ["JFK", "ATL"], [
"SFO", "ATL"], ["ATL", "JFK"], ["ATL", "SFO"]]
print(Solution().findItinerary(tickets))