滴滴春招算法题解析:航班取消影响评估与实现
1. 题目背景与需求分析2026年滴滴春招的第一道编程题取消航班看似简单但蕴含着丰富的业务场景和算法考察点。这道题目模拟了滴滴出行平台在实际运营中可能遇到的航班调度问题要求考生设计算法处理航班取消后的影响评估和资源重新分配。在实际业务中滴滴的智能调度系统需要实时处理海量订单和运力资源当某个航班取消时系统需要快速评估受影响乘客数量并计算出最优的补偿或改签方案。这不仅考验工程师的算法能力也考察对业务场景的理解和抽象能力。2. 题目详细解析2.1 问题描述题目给出以下输入n个航班编号从1到nm个乘客预订记录每条记录包含乘客ID和预订的航班号k个要取消的航班列表要求输出受影响的乘客总数即预订了被取消航班的乘客数每个受影响乘客的ID列表按升序排列2.2 输入输出示例示例输入5 6 2 // 5个航班6个乘客取消2个航班 1 101 // 乘客101预订了航班1 2 102 2 103 3 104 4 105 5 106 2 4 // 取消航班2和4示例输出3 102 103 1052.3 核心考察点这道题主要考察数据结构的选择和使用哈希表、集合等对批量数据的快速查询和处理能力边界条件处理如没有乘客受影响的情况输出格式的正确性3. 算法设计与实现3.1 Java解决方案import java.util.*; public class CancelFlights { public static void main(String[] args) { Scanner sc new Scanner(System.in); int n sc.nextInt(); // 航班数 int m sc.nextInt(); // 乘客数 int k sc.nextInt(); // 取消航班数 // 建立航班到乘客列表的映射 MapInteger, ListInteger flightToPassengers new HashMap(); for (int i 0; i m; i) { int flight sc.nextInt(); int passenger sc.nextInt(); flightToPassengers.computeIfAbsent(flight, x - new ArrayList()).add(passenger); } // 读取要取消的航班 SetInteger canceledFlights new HashSet(); for (int i 0; i k; i) { canceledFlights.add(sc.nextInt()); } // 收集受影响乘客 ListInteger affectedPassengers new ArrayList(); for (int flight : canceledFlights) { if (flightToPassengers.containsKey(flight)) { affectedPassengers.addAll(flightToPassengers.get(flight)); } } // 输出结果 Collections.sort(affectedPassengers); System.out.println(affectedPassengers.size()); for (int passenger : affectedPassengers) { System.out.print(passenger ); } } }3.2 C解决方案#include iostream #include vector #include unordered_map #include unordered_set #include algorithm using namespace std; int main() { int n, m, k; cin n m k; unordered_mapint, vectorint flightToPassengers; for (int i 0; i m; i) { int flight, passenger; cin flight passenger; flightToPassengers[flight].push_back(passenger); } unordered_setint canceledFlights; for (int i 0; i k; i) { int flight; cin flight; canceledFlights.insert(flight); } vectorint affectedPassengers; for (int flight : canceledFlights) { if (flightToPassengers.count(flight)) { affectedPassengers.insert(affectedPassengers.end(), flightToPassengers[flight].begin(), flightToPassengers[flight].end()); } } sort(affectedPassengers.begin(), affectedPassengers.end()); cout affectedPassengers.size() endl; for (int passenger : affectedPassengers) { cout passenger ; } return 0; }3.3 Python解决方案n, m, k map(int, input().split()) flight_to_passengers {} for _ in range(m): flight, passenger map(int, input().split()) if flight not in flight_to_passengers: flight_to_passengers[flight] [] flight_to_passengers[flight].append(passenger) canceled_flights set(map(int, input().split())) affected_passengers [] for flight in canceled_flights: if flight in flight_to_passengers: affected_passengers.extend(flight_to_passengers[flight]) affected_passengers.sort() print(len(affected_passengers)) print( .join(map(str, affected_passengers)))4. 算法分析与优化4.1 时间复杂度分析数据读取和预处理O(m)取消航班处理O(k * p)其中p是平均每个航班的乘客数排序O(p log p)其中p是受影响乘客总数总体复杂度O(m k*p p log p)4.2 空间复杂度分析航班到乘客的映射O(m)取消航班集合O(k)受影响乘客列表最多O(m)总体空间复杂度O(m k)4.3 优化思路如果乘客ID范围有限且不大可以使用数组代替哈希表来存储航班到乘客的映射对于大规模数据可以考虑分批处理或使用更高效的数据结构如果取消航班很多但实际有乘客的航班很少可以优化取消航班的查询过程5. 测试用例设计5.1 常规测试用例输入5 6 2 1 101 2 102 2 103 3 104 4 105 5 106 2 4预期输出3 102 103 1055.2 边界测试用例没有乘客受影响 输入3 2 1 1 101 2 102 3预期输出0所有乘客都受影响 输入2 3 2 1 101 1 102 2 103 1 2预期输出3 101 102 103大规模数据测试验证性能6. 常见问题与解决6.1 如何处理重复乘客ID题目中假设乘客ID是唯一的如果实际中有重复需要根据具体要求处理比如去重或计数。6.2 内存不足怎么办对于极大数量的乘客可以使用更紧凑的数据结构分批处理数据使用外部排序算法6.3 如何提高查询效率可以使用以下方法预先对每个航班的乘客列表排序使用布隆过滤器快速判断航班是否有乘客对取消航班列表也建立哈希表加速查询7. 实际业务场景扩展在实际的出行平台系统中航班/车次取消后还需要考虑自动为受影响乘客推荐替代方案计算补偿金额或优惠券通知乘客取消信息和后续处理更新司机/车辆的调度计划这些功能需要更复杂的系统设计和算法支持但基本原理与这道题目类似都是基于数据的快速查询和处理。

相关新闻

CloudBase Token资源包:一站式搞定小程序AI开发与成本控制

CloudBase Token资源包:一站式搞定小程序AI开发与成本控制

1. 项目概述:当小程序遇上AI,一个平台能解决多少事?最近在捣鼓一个宠物健康管理的小程序,想加个AI问诊功能,让用户拍张宠物照片或者描述下症状,就能得到一些初步的健康分析和建议。想法挺好,但真…

2026/8/25 7:02:07 阅读更多 →
智星云AI视频创作方案:15分钟搞定带货视频,降低技术门槛

智星云AI视频创作方案:15分钟搞定带货视频,降低技术门槛

想用AI做短视频,但被复杂的提示词、繁琐的本地部署和昂贵的硬件成本劝退?这可能是很多内容创作者和开发者面临的共同困境。一边是AI视频生成技术日新月异,另一边却是从“想法”到“成片”之间横亘着巨大的技术鸿沟。最近,一个名为…

2026/8/25 7:02:07 阅读更多 →
【机器学习】机器学习基础_过拟合与正则化_L1_L2_Dropout详解

【机器学习】机器学习基础_过拟合与正则化_L1_L2_Dropout详解

文章目录一、过拟合:训练集优秀,真实场景翻车二、欠拟合:模型连训练集都没学好三、偏差-方差:为什么太简单或太复杂都不好四、用一个小实验看过拟合五、验证集:发现过拟合的基本工具六、L2 正则化:不要让权…

2026/8/25 7:01:07 阅读更多 →

最新新闻

SpringBoot实现简单邮件发送(代码+注释)

SpringBoot实现简单邮件发送(代码+注释)

1.让自己的邮箱变成客户端(以网易云邮箱为例&#xff0c;qq邮箱也一样的操作) 1.开启服务2.它会给你一串乱码做授权码 2.添加依赖<!-- mail 依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-sta…

2026/8/25 7:43:27 阅读更多 →
MATLAB数据拟合实战:从原理到应用的全流程指南

MATLAB数据拟合实战:从原理到应用的全流程指南

1. 项目概述&#xff1a;数据拟合的“灵魂”与MATLAB的“画笔”在工程、科研和数据分析的日常里&#xff0c;我们手里常常攥着一堆散乱的数据点&#xff0c;它们像夜空中的星星&#xff0c;看似无序&#xff0c;背后却可能隐藏着一条优美的规律曲线。数据拟合&#xff0c;就是找…

2026/8/25 7:43:27 阅读更多 →
MATLAB数据拟合实战:从cftool交互到编程实现与光谱分析

MATLAB数据拟合实战:从cftool交互到编程实现与光谱分析

1. 从一次失败的预测说起&#xff1a;为什么我们需要数据拟合&#xff1f;几年前&#xff0c;我接手了一个电机温升预测的项目。当时手头有一堆在不同负载、不同环境温度下测得的电机外壳温度数据&#xff0c;散点图看起来乱糟糟的。我的第一反应是&#xff0c;找个看起来“顺眼…

2026/8/25 7:43:27 阅读更多 →
Docker生态工具:Watchtower、slim、ctop、Kitematic、Shipyard、DockerUI、docker-gc、Dockhand、Dry

Docker生态工具:Watchtower、slim、ctop、Kitematic、Shipyard、DockerUI、docker-gc、Dockhand、Dry

Docker生态工具&#xff08;管理、可视化&#xff09;系列文章&#xff1a; Docker生态工具&#xff1a;Watchtower、slim、ctop、KitematicDocker生态工具&#xff1a;Portainer、LazyDocker、Dockge、App2DockerDocker生态&#xff1a;Arcane、Dockly、Docker-Socket-Proxy、…

2026/8/25 7:43:27 阅读更多 →
mysql的自我总结

mysql的自我总结

什么Mysql的底层索引要用BTree 那就要先说二叉树 : 二叉树以第一个插入的数据作为根节点,假设特定情况他就变成了一个单项链表&#xff0c;查询效率极慢。 其次就是平衡二叉树 平衡二叉树在数据量大的情况下&#xff0c;树会很高&#xff0c;那么我们的检索效率还是不高。 然后…

2026/8/25 7:42:27 阅读更多 →
memcpy深度解析:从内存安全到ARM NEON性能优化实战

memcpy深度解析:从内存安全到ARM NEON性能优化实战

1. 项目概述&#xff1a;一次由memcpy引发的深度排障之旅在嵌入式开发和底层系统编程的世界里&#xff0c;memcpy这个函数就像空气一样无处不在&#xff0c;却又常常被我们习以为常地忽略。它负责将一块内存区域的数据复制到另一块区域&#xff0c;看似简单直接&#xff0c;以至…

2026/8/25 7:42:27 阅读更多 →

日新闻

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

【题目来源】 https://www.luogu.com.cn/problem/P7912 【题目描述】 小熊的水果店里摆放着一排 n 个水果。每个水果只可能是苹果或桔子&#xff0c;从左到右依次用正整数 1,2,…,n 编号。连续排在一起的同一种水果称为一个“块”。小熊要把这一排水果挑到若干个果篮里&#x…

2026/8/25 0:00:34 阅读更多 →
Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

Transformers.js 网页端图像抠图实战&#xff1a;零后端 3 行代码返回透明 PNG 【免费下载链接】transformers.js State-of-the-art Machine Learning for the web. Run &#x1f917; Transformers directly in your browser, with no need for a server! 项目地址: https:/…

2026/8/25 0:00:34 阅读更多 →
数学建模竞赛论文写作指南:从模型构建到学术表达的核心技能

数学建模竞赛论文写作指南:从模型构建到学术表达的核心技能

1. 项目概述&#xff1a;从“会做”到“会写”的竞赛核心跃迁“全国大学生数学建模竞赛”&#xff0c;这个名字对理工科学生来说&#xff0c;分量极重。每年&#xff0c;无数团队在三天三夜的时间里&#xff0c;为一个开放性问题绞尽脑汁&#xff0c;从建立模型、求解算法到编程…

2026/8/25 0:00:34 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态&#xff0c;宏观上观察到的光是由无数个微观的光量子组成的&#xff0c;每个光子在产生的瞬间&#xff0c;其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前&#xff0c;在微观层面&#xff0c;每个光量子的运动轨迹是以波函数所展现…

2026/8/25 3:38:12 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”&#xff0c;而是SIP会话的动态重定向你有没有遇到过这样的场景&#xff1a;客服坐席A正在和客户通电话&#xff0c;突然需要把这通对话无缝转给专家坐席B&#xff0c;客户完全感知不到中间的断连——既没听到忙音&#xff0c;也没被要求重新拨号…

2026/8/25 3:38:18 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack&#xff1f;如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法&#xff0c;那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/25 3:38:23 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速&#xff1a;macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/24 20:22:44 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南&#xff1a;3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗&#xff1f;ncmdump解密工具帮你轻松解决这个困…

2026/8/23 12:10:44 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片&#xff1a;为英语学习 App 打造桌面级学习助手适用平台&#xff1a;HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0&#xff08;API 26 Beta&#xff09;新增了 AgentCard 智能体卡片能力&#xff0c;这是继 HMAF&#xff08;鸿蒙智能体框架&#x…

2026/8/24 11:20:22 阅读更多 →