leetcode 332. Reconstruct Itinerary
来源:互联网 发布:日韩男士帽子 知乎 编辑:程序博客网 时间:2024/06/07 05:08
原题链接
原题链接
解题思路
考察图以及深度搜索。dfs算法(也就是递归)注意一个是边界点,一个是状态恢复的过程。此题很明显当ans.size() == tickets.length+1结束。有些排在列表前面的顶点没有dest,就返回false,恢复原来的状态遍历下一个顶点。若
- 用Map存储图。存储后并将其列表按排序。
- dfs算法遍历整个图。并且将遍历结果存储到list返回。
解题代码
public class Solution { Map<String,List<String>> map = new HashMap<>(); int count; public List<String> findItinerary(String[][] tickets) { count = tickets.length+1; for (String[] strs:tickets ) { List<String> dests = map.get(strs[0]); if(dests == null){ dests = new ArrayList<>(); dests.add(strs[1]); map.put(strs[0],dests); }else{ dests.add(strs[1]); } } for(List<String> dests : map.values()){ Collections.sort(dests); } List<String> ans = new ArrayList<>(); ans.add("JFK"); dfs(ans,"JFK"); return ans; } public boolean dfs(List<String> ans,String src){ if(ans.size() == count) return true;; List<String> dests = map.get(src); if(dests !=null && dests.size()>0){ for (int i = 0;i<dests.size() ;i++ ) { String dest = dests.get(i); ans.add(dest); dests.remove(i); if(dfs(ans,dest)) return true; dests.add(i,dest);//恢复过程 ans.remove(ans.size()-1); } } return false; }}
1 0
- *[LeetCode]332. Reconstruct Itinerary
- leetcode 332. Reconstruct Itinerary
- LeetCode *** 332. Reconstruct Itinerary
- LeetCode 332. Reconstruct Itinerary
- leetcode 332. Reconstruct Itinerary
- [leetcode] 332. Reconstruct Itinerary
- Leetcode 332. Reconstruct Itinerary
- Leetcode 332. Reconstruct Itinerary
- Leetcode 332. Reconstruct Itinerary
- [LeetCode]332. Reconstruct Itinerary
- Leetcode: 332.Reconstruct Itinerary
- leetcode:332. Reconstruct Itinerary
- LeetCode 332. Reconstruct Itinerary
- [leetcode]332. Reconstruct Itinerary
- [LeetCode] 332. Reconstruct Itinerary
- leetcode 332. Reconstruct Itinerary
- [LeetCode]332. Reconstruct Itinerary
- LeetCode 332. Reconstruct Itinerary【medium】
- Android属性动画——实现布局的下拉展开
- 支持向量机 SVM 讲义(五)
- 介绍Json
- oracle笔记
- java多线程基础(6)-调度方式之暂停当前线程方式5-等待(wait)
- leetcode 332. Reconstruct Itinerary
- Hibernate框架笔记
- JNI官方规范中文版——如何在JNI中使用己有的C/C++库
- Python 语言及其应用 Chapter_7_Note 1 正则表达匹配
- 回调的简单理解
- android studio 生成全局变量的快捷键
- php7 五大新特性
- UIScrollView常用属性/常用代理方法总结
- solr最新应用链接分享