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

算法日常・每日刷题--<链表>4

LCR 078. 合并 K 个升序链表 - 力扣(LeetCode)LCR 078. 合并 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 注意:本题与主站 23 题相同: https://leetcode.cn/problems/merge-k-sorted-lists/ [https://leetcode.cn/problems/merge-k-sorted-lists/]https://leetcode.cn/problems/vvXgSW/

题目描述

给定一个链表数组,每个链表都已经按升序排列。 请将所有链表合并到一个升序链表中,返回合并后的链表。

示例: 输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]

核心难点:多条有序链表多路归并,如何高效持续拿到全局最小值节点。

思路分析

多条升序链表,每一条链表头部都是当前链表最小值。我们需要不断从所有链表头部选出全局最小节点接入结果链表。 暴力思路:每次遍历全部链表头寻找最小值,时间复杂度 \(O(kN)\),效率低下。

优化方案:小根堆(优先队列)

  1. 将所有非空链表的头节点放入小根堆;堆自动维护堆顶为全局最小值;
  2. 循环取出堆顶最小节点,接入结果链表;
  3. 如果取出的节点存在后继节点,将后继节点推入堆;
  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) {} * }; */ #include<queue> class Solution { public: struct cmp { bool operator()(const ListNode* l1, const ListNode* l2) { // priority\_queue小根堆规则:返回true,l1放下面 return l1->val > l2->val; } } ; ListNode* mergeKLists(vector<ListNode*>& lists) { int n=lists.size(); //创建小根堆 priority_queue<ListNode*, vector<ListNode*>,cmp > minHeap; //让所有的头节点进入小根堆 for(auto l :lists) if(l) minHeap.push(l); //合并k个有序链表 ListNode*ret=new ListNode(0); ListNode*prev=ret; while(!minHeap.empty()) { ListNode* t=minHeap.top(); minHeap.pop(); prev->next=t; prev=t; if(t->next) minHeap.push(t->next); } prev=ret->next; delete ret; return prev; } };
http://www.jsqmd.com/news/1270659/

相关文章:

  • ComfyUI IPAdapter Plus FaceID错误解决:3种部署模式下的技术方案与实施指南
  • 2026年东莞出发去迭部县旅游高口碑旅行社选择指南 - 热点品牌推荐
  • 【AI视频创作黄金法则】:娱乐类视频爆火的7个底层逻辑与实操公式
  • 公务员培训电话查询方法与优质公考备考机构选择指南 - 热点品牌推荐
  • 电线排线采购 挑选靠谱生产商的实用选择标准指南 - 热点品牌推荐
  • 2026年温州品牌策划设计公司推荐全维度实用指南 - 热点品牌推荐
  • 2026零基础转行网安真心话:没基础、非科班,普通人到底能不能弯道超车?
  • 2026年做轨交检修找轮对轮轴举升输送流水线供货商哪家靠谱? - 热点品牌推荐
  • Video DownloadHelper CoApp终极指南:5个技巧轻松下载网络视频
  • Rust 在功能安全领域的应用前景:形式化验证与编译期不变量检查的协同
  • 三合一协议支持:LuckyLilliaBot如何重新定义QQ机器人开发体验
  • 深入解析Sunshine游戏串流架构:5种高效部署方案实战指南
  • 技术博客全流程:从选题、架构设计、代码验证到图表的完整体验复盘
  • FRP平板热门厂家如何选择 实用建材选型避坑全指南 - 热点品牌推荐
  • 2026年柔性排水管生产商推荐,怎么选才稳妥? - 热点品牌推荐
  • EMIF中断机制:从硬件信号到软件响应的桥梁
  • 天津婚姻家庭律师怎么选?坤石律所婚家团队值得关注 - 本地品牌推荐
  • 2026年潍坊卫生间装修厂家哪家好 本地服务商挑选指南 - 热点品牌推荐
  • Nginx 反向代理与负载均衡实战(基于陶辉《深入理解 Nginx》第三章)
  • 通州区外墙漏水维修电话及专业服务指南 - 热点品牌推荐
  • Midscene:3大核心技术优势重塑跨平台AI自动化测试体验
  • MoneyPrinterTurbo:零门槛AI短视频革命,3分钟打造爆款内容
  • 【剪映AI音量均衡实战指南】:20年音视频工程师亲授3步搞定人声与背景音自动平衡
  • 宝鸡离婚纠纷中夫妻共同债务如何认定?5位专业婚姻家事律师详细解读 - 本地品牌推荐
  • 俄 APT 组织 Laundry Bear 零点击钓鱼攻击技术机理与防御体系研究
  • 2026年常州遗产继承律师怎么选?陈志豪律师15年家事经验,复杂遗产纠纷有章法 - 本地品牌推荐
  • 2026年淮北酒店隔断推拉门生产厂商实用选购指南 - 热点品牌推荐
  • 面向对象与异常处理:从自动咖啡机看 Python 类设计
  • AccelStepper终极指南:Arduino步进电机控制库的完整教程
  • 用 Ace Data Cloud 把 AI 技术内容自动发布到 CSDN:开发者增长的一条实用路径