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

LeetCode 23.合并K个升序链表

给你一个链表数组,每个链表都已经按升序排列。

请你将所有链表合并到一个升序链表中,返回合并后的链表。

示例 1:

输入:lists = [[1,4,5],[1,3,4],[2,6]]
输出:[1,1,2,3,4,4,5,6]
解释:链表数组如下:
[
1->4->5,
1->3->4,
2->6
]
将它们合并到一个有序链表中得到。
1->1->2->3->4->4->5->6
示例 2:

输入:lists = []
输出:[]
示例 3:

输入:lists = [[]]
输出:[]

提示:

k == lists.length
0 <= k <= 10^4
0 <= lists[i].length <= 500
-10^4 <= lists[i][j] <= 10^4
lists[i] 按 升序 排列
lists[i].length 的总和不超过 10^4

我们可以用小顶堆维护每个链表的头节点,然后每次取堆顶的节点加入结果链表:

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next) {} * }; */classSolution{public:ListNode*mergeKLists(vector<ListNode*>&lists){vector<pair<int,int>>h;for(inti=0;i<lists.size();++i){if(lists[i]!=nullptr){h.push_back({lists[i]->val,i});}}make_heap(h.begin(),h.end(),greater());ListNode*ans=nullptr;ListNode*cur=nullptr;while(h.size()>0){intminIdx=h[0].second;if(ans==nullptr){ans=lists[minIdx];cur=ans;}else{cur->next=lists[minIdx];cur=cur->next;}pop_heap(h.begin(),h.end(),greater());h.pop_back();lists[minIdx]=lists[minIdx]->next;if(lists[minIdx]!=nullptr){h.push_back({lists[minIdx]->val,minIdx});push_heap(h.begin(),h.end(),greater());}}returnans;}};

如果所有链表中总共有n个节点,有个k个链表,则此算法时间复杂度为O(k+nlogk),空间复杂度为O(k)。

http://www.jsqmd.com/news/1106040/

相关文章:

  • Android 7系统日志(四)日志写入接口—Java层与Native层
  • Codex 插件生态全景:从官方工具到社区神器
  • 工程化应用基础设施:可观测性要覆盖 提示词、检索和执行
  • HBM Predictor安装与配置教程:简单5步搭建预测环境
  • Visa、Stripe等140余家机构联合推出Open USD稳定币,剑指Tether
  • 第92题 IGBT模块封装用高可靠铝线键合与铜线键合
  • 2026手机证件照制作工具实操指南:免费无水印软件梳理与收费坑避雷
  • Windows安卓应用安装神器:APK Installer完全指南 - 3分钟掌握跨平台应用管理
  • 年入100亿压缩机龙头IPO!1.66亿诉讼案未决,应收账款质量恶化
  • 让大模型跑在小芯片上:工程挑战比口号更硬
  • 番茄小说下载器终极指南:三分钟打造个人离线图书馆的完整教程
  • 记录:2026.7.1
  • 告别复杂配置!Claude Code完整安装指南,小白也能10分钟上手(Linux/WSL2)
  • 从 Hermes Agent 到 Harness 工程:AI Agent 落地,靠的不只是大模型
  • 单帧像素推演三维空间,SpaceOS联动Pixel2Geo打通单画面实景重建全链路
  • YOLOv11 改进 - C2PSA C2PSA融合EDFFN高效判别频域前馈网络(CVPR 2025):频域筛选机制增强细节感知,优化复杂场景目标检测
  • novel-downloader:三步搞定网络小说永久保存的终极指南
  • ChatGPT Plus / Pro 付款后没看到结果,先查这几步
  • 原生Signals正式落地、管道操作符终结“嵌套地狱”、WebNN调用NPU算力——4个让前端代码“减重”50%的ES2026特性
  • 孩子确诊自闭症/多动症后该找谁?一份给迷茫家长的专业参考指南
  • 软件设计周期
  • 卡梅德生物科普:CD70(TNFSF7)的免疫共刺激机制与研究应用
  • 基于SpringBoot+Vue的日常办公用品直售推荐系统管理系统设计与实现【Java+MySQL+MyBatis完整源码】
  • 类成员变量的初始化 _
  • M4Markets的长期使用感受顺不顺手?
  • AI服装设计工作流拆解:为什么说下一站不是“AI画图工具”,而是“垂直AI设计平台”
  • 核心数据结构设计
  • 检索增强从零落地:检索增强系统的索引、召回与评测
  • ·系统建模与UML应用
  • 功能极简取舍:每个按钮都要为用户承担重量