news 2026/5/12 12:26:27

leetcode 787. Cheapest Flights Within K Stops K 站中转内最便宜的航班

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
leetcode 787. Cheapest Flights Within K Stops K 站中转内最便宜的航班

Problem: 787. Cheapest Flights Within K Stops K 站中转内最便宜的航班

解题过程

广度优先搜索会超时,可能的情况太多了,而且不好剪枝的,不过用上记忆化搜索也是可以的

深度优先搜索 + 记忆化搜索,先用邻接表存一遍,然后分解成子问题,每次k-1,用哈希表记忆化搜索,拿到当前的最小值

Code

class Solution { public: int minmin = INT_MAX, destination, source; int ump[100000]; int dfs(vector<vector<pair<int, int>>>& array, int now, int k) { int key = (now * 100) + k; // if(ump.find(key)!=ump.end()) return ump[key]; if(ump[key] > 0) return ump[key]; int tmp, mi = INT_MAX; for(int j = 0; j < array[now].size(); j++) { if(array[now][j].first == destination) { mi = min(mi, array[now][j].second); } else if(array[now][j].first != source){ if(k==1) { continue; } tmp = dfs(array, array[now][j].first, k-1); if(tmp != INT_MAX) { tmp = tmp + array[now][j].second; } mi = min(mi, tmp); } } ump[key] = mi; return mi; } int findCheapestPrice(int n, vector<vector<int>>& flights, int src, int dst, int k) { destination = dst; source = src; // vector<vector<pair<char, short>>> array(n); vector<vector<pair<int, int>>> array(n); for(int i = 0; i < flights.size(); i++) { array[flights[i][0]].push_back( std::make_pair( flights[i][1], flights[i][2] ) ); } memset(ump, 0, sizeof(ump)); minmin = dfs(array, src, ++k); if(minmin==INT_MAX) return -1; return minmin; queue<pair<char, short>> qe; qe.push({src, 0}); int now, mincost = INT_MAX, cost; k++; while( !qe.empty() && k > 0) { int sz = qe.size(); k--; for(int i = 0; i < sz; i++) { now = qe.front().first; cost = qe.front().second; qe.pop(); for(int j = 0; j < array[now].size(); j++) { if(array[now][j].first == dst) { mincost = min(mincost, cost + array[now][j].second); } else if(array[now][j].first != now){ if(mincost > cost + array[now][j].second) { qe.push({array[now][j].first, cost + array[now][j].second}); } } } } } if(mincost==INT_MAX) return -1; return mincost; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 9:30:20

终极指南:使用Cowabunga工具箱深度定制你的iOS设备

终极指南&#xff1a;使用Cowabunga工具箱深度定制你的iOS设备 【免费下载链接】Cowabunga iOS 14.0-15.7.1 & 16.0-16.1.2 MacDirtyCow ToolBox 项目地址: https://gitcode.com/gh_mirrors/co/Cowabunga Cowabunga是一款专为iOS 14.0至15.7.1以及16.0至16.1.2版本设…

作者头像 李华
网站建设 2026/5/7 20:45:00

BasicTS时间序列预测快速入门终极指南

BasicTS时间序列预测快速入门终极指南 【免费下载链接】BasicTS 项目地址: https://gitcode.com/gh_mirrors/ba/BasicTS BasicTS是一个公平且可扩展的时间序列分析基准和工具包&#xff0c;为开发者提供了统一的深度学习模型训练和评估平台。无论你是初学者还是经验丰富…

作者头像 李华
网站建设 2026/5/12 2:46:41

PaddlePaddle镜像支持多维度GPU资源报表生成

PaddlePaddle镜像支持多维度GPU资源报表生成 在AI模型训练日益复杂、算力成本不断攀升的今天&#xff0c;一次看似正常的训练任务背后&#xff0c;可能隐藏着显存泄漏、GPU空转或负载不均等“隐形杀手”。这些隐患不仅拖慢迭代节奏&#xff0c;更可能导致数万元的云资源浪费。尤…

作者头像 李华
网站建设 2026/5/9 12:39:10

SystemVerilog中new()函数的系统学习

深入理解 SystemVerilog 中的new()&#xff1a;从对象创建到验证平台设计在现代芯片验证的世界里&#xff0c;我们早已告别了“写死激励 看波形”的原始时代。面对动辄数亿门级的SoC设计&#xff0c;如何构建一个可重用、可扩展、高覆盖率的验证环境&#xff0c;成了每个验证工…

作者头像 李华
网站建设 2026/5/11 16:33:28

PaddlePaddle镜像支持模型服务降级策略,保障核心GPU业务

PaddlePaddle镜像支持模型服务降级策略&#xff0c;保障核心GPU业务 在金融风控系统的一次日常压测中&#xff0c;某银行的AI票据识别服务突然出现大规模超时告警。运维团队紧急排查后发现&#xff0c;并非代码故障或网络异常&#xff0c;而是高峰时段并发请求激增导致GPU显存溢…

作者头像 李华
网站建设 2026/5/10 18:03:30

ComfyUI自定义脚本终极指南:大幅提升AI绘画工作流效率

ComfyUI自定义脚本终极指南&#xff1a;大幅提升AI绘画工作流效率 【免费下载链接】ComfyUI-Custom-Scripts Enhancements & experiments for ComfyUI, mostly focusing on UI features 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-Custom-Scripts ComfyU…

作者头像 李华