给定一个机票的字符串二维数组 [from, to],子数组中的两个成员分别表示飞机出发和降落的机场地点,对该行程进行重新规划排序。所有这些机票都属于一个从JFK(肯尼迪国际机场)出发的先生,所以该行程必须从 JFK 出发。

说明:

  1. 如果存在多种有效的行程,你可以按字符自然排序返回最小的行程组合。例如,行程 ["JFK", "LGA"] 与 ["JFK", "LGB"] 相比就更小,排序更靠前
  2. 所有的机场都用三个大写字母表示(机场代码)。
  3. 假定所有机票至少存在一种合理的行程。

示例 1:

输入: [["MUC", "LHR"], ["JFK", "MUC"], ["SFO", "SJC"], ["LHR", "SFO"]]
输出: ["JFK", "MUC", "LHR", "SFO", "SJC"]

示例 2:

输入: [["JFK","SFO"],["JFK","ATL"],["SFO","ATL"],["ATL","JFK"],["ATL","SFO"]]
输出: ["JFK","ATL","JFK","SFO","ATL","SFO"]解释: 另一种有效的行程是 ["JFK","SFO","ATL","JFK","ATL","SFO"]。但是它自然排序更大更靠后。

class Solution {
public:
    vector<string> findItinerary(vector<pair<string, string>> tickets) {
        vector<string> res;
        unordered_map<string, multiset<string>> m;
        for (auto a : tickets) {
            m[a.first].insert(a.second);
        }
        dfs(m, "JFK", res);
        return vector<string> (res.rbegin(), res.rend());
    }
    void dfs(unordered_map<string, multiset<string>>& m, string s, vector<string>& res) {
        while (m[s].size()) {
            string t = *m[s].begin();
            m[s].erase(m[s].begin());
            dfs(m, t, res);
        }
        res.push_back(s);
    }
};

332.重新安排行程相关推荐

  1. 代码随想录30——回溯:332重新安排行程、51N皇后、37解数独

    文章目录 1.332重新安排行程 1.1.题目 1.2.解答 1.2.1.思路 1.2.2.代码 2.51N皇后 2.1.题目 2.2.解答 3.37解数独 3.1.题目 3.2.解答 3.2.1.正 ...

  2. 「leetcode」332.重新安排行程【回溯算法/深搜】详细图解!

    本文 https://github.com/youngyangyang04/leetcode-master 已经收录,里面还有leetcode刷题攻略.各个类型经典题目刷题顺序.思维导图,可以fork ...

  3. LeetCode刷题流程:回溯算法-13.332. 重新安排行程

    332. 重新安排行程 给定一个机票的字符串二维数组 [from, to],子数组中的两个成员分别表示飞机出发和降落的机场地点,对该行程进行重新规划排序.所有这些机票都属于一个从 JFK(肯尼迪国际机 ...

  4. 代码随想录算法训练营第30天 | 51. N皇后 37.解数独 332.重新安排行程 回溯篇小结

    代码随想录系列文章目录 回溯篇 - 棋盘问题 图的dfs 文章目录 代码随想录系列文章目录 51.N皇后 37.解数独 332.重新安排行程 回溯篇小结 51.N皇后 题目链接 这道题的思路是什么样的 ...

  5. 代码随想录算法训练营第30天| 332.重新安排行程 、51. N皇后 、 37. 解数独

    代码随想录算法训练营第30天| 332.重新安排行程 .51. N皇后 . 37. 解数独 332.重新安排行程 开始想的是将行程进行全排列之后,然后选出一个字典排序最小的.就也是使用的回溯的思路. ...

  6. 代码随想录算法训练营第三十天| 第七章 回溯算法:332.重新安排行程,51.N皇后,37.解数独(python)

    回溯算法总结 332.重新安排行程 讲解链接 class Solution:def __init__(self):self.res = []self.dict = defaultdict(list)d ...

  7. 代码随想录【Day 30】| 332.重新安排行程 、51. N皇后 、37. 解数独

    代码随想录[Day 30] | 332.重新安排行程 .51. N皇后 .37. 解数独 332.重新安排行程 题目链接:332.重新安排行程 卡尔文解 解题思路及注意事项: 代码实现: 51. N皇 ...

  8. 【LeetCode】332. 重新安排行程

    [LeetCode]332. 重新安排行程 前言 最近在刷回溯专题的题目,前几种题型(排列.组合.子集.子序列)如果直接套用模板,加一些剪枝,随便过的那种 但是这一题如果带入普通的回溯模板,可能无从下 ...

  9. 回溯算法模板之:332. 重新安排行程

    题目链接:332.重新安排行程 分析:需要重新排列行程,并且需要按照自然排序的大小,所以第一步就先进行字典的创建,key是起始地,value是可到达所有的目的地,然后对value进行排序.使用回溯算法 ...

  10. 回溯 | 19 332.重新安排行程(hard)**

    本文记录的是刷题过程中的重要概念和笔记.如有侵权,请联系删除. 目录 332.重新安排行程 思路 死循环 记录映射关系 回溯法 c++ 补充:const 总结 332.重新安排行程 力扣题目链接(op ...

最新文章

  1. 【一】TSP、VRP、VRP模型介绍
  2. JavaScript类——鼠标点击下笑脸变化
  3. VMware Virtual SAN存储设计规划
  4. icu入院宣教流程图_ICU患者及家属的健康教育PPT.ppt
  5. 12家股份银行当中,哪个盈利能力和口碑是最好的?
  6. MFC中卡拉OK字体的定时器实现,使用DC的DrawText函数实现
  7. date js 半年_moment.js 搜索栏获取最近一周,一个月,三个月,半年,一年时间
  8. Nginx支持WebSocket反向代理-学习小结
  9. lintcode: 左填充
  10. N81新手入门全攻略——N81常规设置问答篇
  11. vcpkg: bootstrap-vcpkg.bat下载失败问题
  12. 手机WIFI传文件到局域网服务器,局域网内手机和电脑怎么实现无线传输文件?
  13. 王者荣耀1-HTMLCSS教案
  14. 公司HP-EVA4400存储硬盘离线数据恢复方法
  15. vue-cli之加载ico文件
  16. 下载网页上的视频—Flash Video Downloader插件
  17. 教你使用晨曦记账本,登记管理借还款
  18. FIREFOX打不开GMAIL问题解决
  19. 仿bugtags实现App线上Crash监控及问题复现
  20. Hibernate中发生Session is closed 的另一种可能

热门文章

  1. Oracle单实例数据库迁移到Oracle RAC 环境之(2)--实施篇
  2. 静态库与动态库的制作
  3. JavaScript_高程三_01
  4. 关于TP模板的目录设置和渲染问题
  5. .NET MVC4 本地正常 部署 服务器错误
  6. Spring Boot入门(2)-项目属性配置
  7. 百元百鸡 //构造结构体变量
  8. ssh 切换用户_从零开始学习华为路由交换 | 配置ssh远程管理
  9. python处理pdf的第三方库_Python使用到第三方库PyMuPDF图片与pdf相互转换
  10. html合并单元格_HTML基础2