https://leetcode.com/problems/reconstruct-itinerary/?tab=Description
给定出发到达,起始位置JFK,排序,要求字典序最小。assume一定能走完
PriorityQueue保存每个点作为出发地的目的地,选最小的往后走
public class Solution {
HashMap<String, PriorityQueue<String>> map = new HashMap();
LinkedList<String> res = new LinkedList();
public List<String> findItinerary(String[][] tickets) {
if (tickets == null || tickets.length == 0) {
return res;
}
for (String[] ticket : tickets) {
map.putIfAbsent(ticket[0], new PriorityQueue<String>());
map.get(ticket[0]).add(ticket[1]);
}
dfs("JFK");
return res;
}
private void dfs(String from) {
PriorityQueue<String> queue = map.get(from);
while (queue != null && !queue.isEmpty()) {
dfs(queue.poll());
}
// 代码放置位置!后续已经加到res中之后
res.addFirst(from);
}
}