Graph DFS Problem HARD
Hard
5.6K
1.8K
Companies
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.
Example 1:

Input: tickets = [["MUC","LHR"],["JFK","MUC"],["SFO","SJC"],["LHR","SFO"]] Output: ["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 in lexical order.
Constraints:
1 <= tickets.length <= 300
tickets[i].length == 2
fromi.length == 3
toi.length == 3
fromi
andtoi
consist of uppercase English letters.fromi != toi
look at the solution
try to understand it!
Important Point
in question, each ticket should be used atleast and at most once (exactly once)
so whichever way you go you will find a way. But since you need to find a lexicographically smaller solution so each time you will choose the city lexicographically.
When you get collections from a map, if you make changes to it, it will change the collection inside the map.
look at the solution and understand flow control. Its brilliant.
Using the second test case you can understand the algo better...
since there are two city possible at each point, algo is running while loop to go through each way once but as we go deeper in recursion (before while loop ends we go deeper) every other nodes is getting used and deleted so while loop ends in one iteration at every point and doesn't make the second call. Hence no extra addition to the linked list. It is of perfect size.
since there are two city possible at each point, algo is running while loop to go through each way once but as we go deeper in recursion (before while loop ends we go deeper) every other nodes is getting used and deleted so while loop ends in one iteration at every point and doesn't make the second call. Hence no extra addition to the linked list. It is of perfect size.
Comments
Post a Comment