Leetcode: 332. Reconstruct Itinerary
Problem Statement
from typing import List
class Solution:
def findItinerary(self, tickets: List[List[str]]) -> List[str]:
A = {u: [] for u in set(u for t in tickets for u in t)}
for u, v in tickets:
A[u].append(v)
for u in A:
A[u].sort(reverse=True)
st = ["JFK"]
ans = []
while st:
if not A[st[-1]]:
ans.append(st.pop())
else:
st.append(A[st[-1]].pop())
ans.reverse()
return ans
assert Solution().findItinerary(
[["MUC", "LHR"], ["JFK", "MUC"], ["SFO", "SJC"], ["LHR", "SFO"]]
) == ["JFK", "MUC", "LHR", "SFO", "SJC"]
assert Solution().findItinerary(
[["JFK", "SFO"], ["JFK", "ATL"], ["SFO", "ATL"], ["ATL", "JFK"], ["ATL", "SFO"]]
) == ["JFK", "ATL", "JFK", "SFO", "ATL", "SFO"]