Loading...

09-14 leetcode-0332

链接 332. Reconstruct Itinerary

题目

You are given a list of airline tickets where tickets[i] = [fromi, toi] represent the departure and the arrival airports of one flight. Reconstruct the itinerary in order and return it.

All of the tickets belong to a man who departs from “JFK”, thus, the itinerary must begin with “JFK”. If there are multiple valid itineraries, you should return the itinerary that has the smallest lexical order when read as a single string.

For example, the itinerary [“JFK”, “LGA”] has a smaller lexical order than [“JFK”, “LGB”].
You may assume all tickets form at least one valid itinerary. You must use all the tickets once and only once.

题解

这题其实是个阅读题,读懂题了就能写了

一个 dfs,先建图,建图中进行排序,然后 dfs 即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution:
def findItinerary(self, tickets: list[list[str]]) -> list[str]:
graph: dict[str, list[str]] = {}
for src, dst in tickets:
graph.setdefault(src, []).append(dst)
for src in graph:
graph[src].sort(reverse=True)
results = []

def dfs(src: str) -> None:
if src in graph:
while graph[src]:
dfs(graph[src].pop())
results.append(src)

dfs("JFK")
return results[::-1]

Comment