当前位置: 首页 > article >正文

力扣-回溯-332 重新安排行程

思路

要完成对当前机场和目标机场的数据定义,要用出发机场映射到目标机场,而且出发机场可能有多个,所以要使用unordered_map作为外部容器,由于同一个出发机场到目标机场,需要先到string小的目标机场尝试,所以用map记录目标机场以及当前航班的次数

回溯时,先从字母序小的机场开始尝试,一旦获取到一个结果后就返回true,让剩下的回溯不再进行。

代码

class Solution {
public:
    vector<string> result;
    unordered_map< string, map<string, int> > targets;
    bool backtracking(int tickNum){
        if(result.size() == tickNum + 1){
            return true;
        }

        for(pair< const string, int> &target : targets[result[result.size()-1]]){
            if(target.second > 0){
                result.push_back(target.first);
                target.second--;
                if( backtracking(tickNum)) return true;
                result.pop_back();
                target.second++;
            }
        } 

        return false;
    }
    vector<string> findItinerary(vector<vector<string>>& tickets) {
        for( const vector<string> vec: tickets){
            targets[vec[0]][vec[1]]++;
        }
        result.push_back("JFK");
        backtracking(tickets.size());

        return result;
    }
};


http://www.kler.cn/a/558167.html

相关文章:

  • 前端八股——计算机网络+浏览器原理
  • Selenium库详解:Python实现模拟登录与反爬限制的进阶指南
  • 【含开题报告+文档+PPT+源码】基于springboot加vue 前后端分离的校园新闻审核发布管理系统
  • 国产单片机开发汽车气压表胎压计解决方案
  • 离线部署大模型:ollama+deepseek+open-webui
  • 如何通过 Python 实现一个消息队列,为在线客服系统与海外运营的APP对接
  • Redis-RDB
  • HarmonyOS学习第4天: DevEco Studio初体验
  • 蓝桥杯 Java B 组之双指针技巧(快慢指针、滑动窗口)
  • 若依按照时间段查询
  • Django的初步使用
  • Python基于Django的广州、北京、杭州二手房房价可视化分析系统(附源码)
  • 【再谈设计模式】迭代器模式~遍历集合元素的利器
  • relief=tk.RAISED详细介绍 relief是指定控件的边框样式
  • 【练习】【回溯:组合:一个集合 元素可重复】力扣 39. 组合总和
  • 敏捷开发07:敏捷项目可视化管理-ScrumBoard(Scrum板)使用介绍
  • 论文略读:Uncovering Hidden Representations in Language Models
  • 分类解析决策模型
  • 快速定位并优化CPU 与 JVM 内存性能瓶颈
  • 学习Linux准备2