150强访谈简单

重建行程

“重建行程”问题的详细指南和 Python 实现。

问题陈述

简单

您将获得一份机票列表,其中 Tickets[i] = [from_i, to_i] 代表一个航班的出发机场和到达机场。按顺序重构行程并返回。

所有门票均属于从“肯尼迪”出发的一名男子。因此,行程必须以“JFK”开头。

如果有多个有效行程,则应返回作为单个字符串读取时词汇顺序最小的行程。例如,行程 ['JFK', 'LGA'] 的词汇顺序比 ['JFK', 'LGB'] 更小。

您可以假设所有门票均至少形成一个有效行程。所有门票必须使用一次且仅限一次。

编写一个函数 findItinerary(tickets: List[List[str]]) -> List[str]

约束条件
  • 1 <= len(tickets) <= 300
  • tickets[i].length == 2
  • from_i.length == 3
  • to_i.length == 3
  • from_i and to_i consist of uppercase English letters

示例

Example 1
Input
tickets = [["MUC","LHR"],["JFK","MUC"],["SFO","SJC"],["LHR","SFO"]]
Output
["JFK","MUC","LHR","SFO","SJC"]
Explanation

The only valid itinerary is JFK -> MUC -> LHR -> SFO -> SJC.

Example 2
Input
tickets = [["JFK","SFO"],["JFK","ATL"],["SFO","ATL"],["ATL","JFK"],["ATL","SFO"]]
Output
["JFK","ATL","JFK","SFO","ATL","SFO"]
Explanation

Another possible reconstruction is JFK -> SFO -> ATL -> JFK -> ATL -> SFO, but it is larger lexically.

Need a Hint?
考虑使用高级图特定的数据结构,例如集合或堆。
Edge Cases to Watch
  • 空输入结构
  • 单元素输入
  • 大数值范围

准备好解决了吗?

Open the problem in PyRun's browser-based Python editor. Your code runs fully offline — no server required.

在编辑器中打开
Found this breakdown helpful?

PyRun is built and maintained by an independent solo developer. If this helped your interview prep, consider buying a coffee!

Buy me a coffee

推荐的 Python 资源

通过相关的交互式教程、备忘单和代码比较来扩展您的知识。