g0301_0400.s0332_reconstruct_itinerary.Solution Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of leetcode-in-java Show documentation
Show all versions of leetcode-in-java Show documentation
Java-based LeetCode algorithm problem solutions, regularly updated
package g0301_0400.s0332_reconstruct_itinerary;
// #Hard #Depth_First_Search #Graph #Eulerian_Circuit
// #2022_07_10_Time_4_ms_(100.00%)_Space_43_MB_(91.20%)
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.PriorityQueue;
public class Solution {
public List findItinerary(List> tickets) {
HashMap> map = new HashMap<>();
LinkedList ans = new LinkedList<>();
for (List ticket : tickets) {
String src = ticket.get(0);
String dest = ticket.get(1);
PriorityQueue pq = map.getOrDefault(src, new PriorityQueue<>());
pq.add(dest);
map.put(src, pq);
}
dfs(map, "JFK", ans);
return ans;
}
private void dfs(Map> map, String src, LinkedList ans) {
PriorityQueue temp = map.get(src);
while (temp != null && !temp.isEmpty()) {
String nbr = temp.remove();
dfs(map, nbr, ans);
}
ans.addFirst(src);
}
}