(M)DFS:332. Reconstruct Itinerary
来源:互联网 发布:php 判断今天星期几 编辑:程序博客网 时间:2024/06/08 02:38
参考大神博客:
这道题给我们一堆飞机票,让我们建立一个行程单,如果有多种方法,取其中字母顺序小的那种方法。这道题的本质是有向图的遍历问题,本题是关于有向图的边的遍历。每张机票都是有向图的一条边,我们需要找出一条经过所有边的路径,那么DFS不是我们的不二选择。先来看递归的结果,我们首先把图建立起来,通过邻接链表来建立。由于题目要求解法按字母顺序小的,那么我们考虑用multiset,可以自动排序。等我们图建立好了以后,从节点JFK开始遍历,只要当前节点映射的multiset里有节点,我们取出这个节点,将其在multiset里删掉,然后继续递归遍历这个节点,由于题目中限定了一定会有解,那么等图中所有的multiset中都没有节点的时候,我们把当前节点存入结果中,然后再一层层回溯回去,将当前节点都存入结果,那么最后我们结果中存的顺序和我们需要的相反的,我们最后再翻转一下即可。
class Solution { public: void DFS(string str) { while(hash[str].size() > 0) { string tem = *hash[str].begin(); hash[str].erase(hash[str].begin()); DFS(tem); } result.push_back(str); } vector<string> findItinerary(vector<pair<string, string>> tickets) { if(tickets.size() ==0) return {}; for(auto val: tickets) hash[val.first].insert(val.second); DFS("JFK"); reverse(result.begin(), result.end()); return result; } private: vector<string> result; unordered_map<string, multiset<string>> hash; };
阅读全文
0 0
- (M)DFS:332. Reconstruct Itinerary
- 【VIP】【图】332. Reconstruct Itinerary【M】【47】
- leetcode---Reconstruct Itinerary---dfs
- *[LeetCode]332. Reconstruct Itinerary
- 332. Reconstruct Itinerary
- leetcode 332. Reconstruct Itinerary
- 332. Reconstruct Itinerary
- LeetCode *** 332. Reconstruct Itinerary
- LeetCode 332. Reconstruct Itinerary
- leetcode 332. Reconstruct Itinerary
- 332. Reconstruct Itinerary
- 332. Reconstruct Itinerary
- 332. Reconstruct Itinerary(重要)
- [leetcode] 332. Reconstruct Itinerary
- Leetcode 332. Reconstruct Itinerary
- 332. Reconstruct Itinerary
- 332. Reconstruct Itinerary
- Leetcode 332. Reconstruct Itinerary
- 前后端分离。前端POST请求参数过长,导致400错误解决办法及分析
- ThinkPHP中$map用法
- springMVC4集成swagger2
- java毕业设计代做,Android毕业设计代做,jsp毕业设计代做,等等,原创,满意后付款 (易软)
- python open函数
- (M)DFS:332. Reconstruct Itinerary
- Ubuntu 16.04下安装sogou 输入法安装
- Gradle多渠道打包
- ubuntu 安装go1.9.1
- oozie初学习
- fastdfs 图片服务器 使用java端作为客户端上传图片 / 【FastDFS专题】fastdfs使用实战(概念篇)
- 2017第六届中国(天津)国际工业机器人展览会-中国制(工)博会会刊(参展商名录)
- Java 定义一个参数类型一样,但个数不固定的方法
- 跟同事搞得图片拖拽以及图片放大的View