网站地址申请,中文命名网页制作素材会怎么样,四川网站建设设计公司排名,有关网站建设的合同给定一个机票的字符串二维数组 [from, to]#xff0c;子数组中的两个成员分别表示飞机出发和降落的机场地点#xff0c;对该行程进行重新规划排序。所有这些机票都属于一个从 JFK#xff08;肯尼迪国际机场#xff09;出发的先生#xff0c;所以该行程必须从 JFK 开始。
…给定一个机票的字符串二维数组 [from, to]子数组中的两个成员分别表示飞机出发和降落的机场地点对该行程进行重新规划排序。所有这些机票都属于一个从 JFK肯尼迪国际机场出发的先生所以该行程必须从 JFK 开始。
说明:
如果存在多种有效的行程你可以按字符自然排序返回最小的行程组合。例如行程 [“JFK”, “LGA”] 与 [“JFK”, “LGB”] 相比就更小排序更靠前 所有的机场都用三个大写字母表示机场代码。 假定所有机票至少存在一种合理的行程。 示例 1:
输入: [[“MUC”, “LHR”], [“JFK”, “MUC”], [“SFO”, “SJC”], [“LHR”, “SFO”]] 输出: [“JFK”, “MUC”, “LHR”, “SFO”, “SJC”]
代码
class Solution {ListString resnew ArrayList();public ListString findItinerary(ListListString tickets) {MapString,PriorityQueueString mapnew HashMap();for(ListString list:tickets)//创建邻接表{if(!map.containsKey(list.get(0)))map.put(list.get(0),new PriorityQueue());map.get(list.get(0)).add(list.get(1));}getItinerary(map,JFK);Collections.reverse(res);//逆转return res;}public void getItinerary( MapString,PriorityQueueString map,String cur) {while (map.containsKey(cur)!map.get(cur).isEmpty())//对连接的节点dfs并且删除连接的边getItinerary(map,map.get(cur).poll()); res.add(cur);}
}