news 2026/5/26 7:15:54

leetcode 23. 合并 K 个升序链表

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
leetcode 23. 合并 K 个升序链表

思路:采用了暴力破解法

1.值收集:遍历 K 个链表的所有节点,将节点值存入数组,把 “链表的有序合并” 转化为 “数组的排序”;
2.数组排序:利用系统排序函数对存储节点值的数组进行升序排序,得到全局有序的数值序列;
3.链表重建:以排序后的数组为基础,逐个创建链表节点并拼接,生成最终的升序链表。

创建一个整型数组,用于存放 链表中所有节点的数值。

链表的优势是 “动态插入删除”,但此处我们需要全局排序,数组的随机访问和排序操作更高效、更易实现。

外层循环:遍历输入的 lists 数组(lists 中每个元素是一个链表的头指针),head 代表当前遍历到的链表的头节点。逐个处理 K 个链表,确保没有遗漏任何一个链表。

内层循环:定义指针,初始指向当前链表的头节点,用于遍历该链表的所有节点。
循环条件 : 只要指针不指向空(即未到链表末尾),就继续遍历,将当前节点的数值 val 存入数组。然后指针向后移动一位,指向链表的下一个节点,直到遍历到链表末尾。

排序。

然后定义虚拟头节点,避免处理空链表的特殊情况,同时无需单独处理第一个节点的头指针赋值 问题,所有新节点都可以统一拼接到 dummy 之后

定义指针 p,初始指向虚拟头节点 dummy,作为移动指针,负责逐个拼接新创建的链表节点,避免频繁修改头指针。

最后返回dummy.next,因为dummy是虚拟头节点,他的后一个才是真正的头节点

时间复杂度:O(NlogN)
遍历所有节点收集值:O(N)(N 为所有节点的总数,每个节点仅访问一次);
数组排序:O(NlogN)(sort 函数的时间复杂度);
重建链表:O(N)(每个数值仅创建一次节点);
总复杂度由最高项决定,即 O(NlogN)。

class Solution {

public:

ListNode* mergeKLists(vector<ListNode*>& lists) {//用listnode表示链表时,ListNode * 默认代表链表头

vector<int> a;

for(ListNode* head:lists){//外层循环遍历lists数组中每个链表的头指针

ListNode* p=head;

while(p!=nullptr){//内层循环遍历当前链表的每个节点,到链表末尾

a.push_back(p->val);

p=p->next;

}

}

sort(a.begin(),a.end());

ListNode dummy(0);//创建一个虚拟头节点

ListNode* q=&dummy;

for(int b:a){

q->next=new ListNode(b); //用当前数值创建新节点,接在q指针之后

q=q->next;

}

return dummy.next;

}

};

这个方法的核心是通过收集所有节点值→排序数组→重建链表的三步操作,把合并 K 个有序链表转化为更易实现的数组操作。

它的优势是思路直观、代码好写,用数组排序规避了复杂的链表指针操作,虚拟头节点还能处理空链表等边界情况;缺点是需要额外数组空间,时间复杂度为O(NlogN)(N 是总节点数),适合小规模数据或快速实现的场景。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/25 19:02:02

4.2 X-Ray 视角透视 Agent:用 Langfuse 追踪、调试与优化你的 AI 应用

X-Ray 视角透视 Agent:用 Langfuse 追踪、调试与优化你的 AI 应用 导语:在上一章,我们建立了评估体系的“理论大厦”。但理论需要工具来落地。如果说开发 AI 应用像是在造一架精密的飞机,那么没有追踪和可观测性工具,就相当于在没有仪表盘和黑匣子的情况下“盲飞”。这无疑…

作者头像 李华
网站建设 2026/5/26 3:57:18

4.5 AI 世界的“防火墙”:从零构建 LLM 攻击实时检测系统

4.5 AI 世界的“防火墙”:从零构建 LLM 攻击实时检测系统 导语:我们已经构建了功能强大、可观测、可评估的 AI Agent。但我们是否忽略了一个致命的“阿喀琉斯之踵”——安全?当你的 Agent 能够调用 API、访问数据库、甚至执行代码时,它就从一个信息处理器,变成了一个拥有“…

作者头像 李华
网站建设 2026/5/25 13:08:02

【dz-1003】基于太阳能供电的园林远程监控系统

摘要 随着园林管理现代化进程的加快&#xff0c;精准把控园林土壤及环境状况对提升植物成活率、降低养护成本具有重要意义。传统的园林管理模式依赖人工巡检&#xff0c;不仅存在响应滞后、劳动强度大的问题&#xff0c;还因人为判断差异导致管理标准不统一&#xff0c;难以满…

作者头像 李华
网站建设 2026/5/26 5:56:33

4.4 线上vs离线:使用 Langfuse 实现智能体的全方位无死角评估

线上vs离线:使用 Langfuse 实现智能体的全方位无死角评估 导语:我们已经学会了用 Langfuse 收集 AI 应用的“痕迹”(Traces)。现在,是时候从这些痕迹中“断案”了——也就是进行评估。评估是连接“可观测性”和“持续优化”的桥梁。在本章中,我们将深入 Langfuse 的核心评…

作者头像 李华
网站建设 2026/5/26 1:28:27

allure报告中附件无法显示问题排查

如果 allure.attach 附加的图片无法查看&#xff0c;可能的原因和排查方法如下&#xff1a;一、图片数据格式错误原因 附加的图片数据不是有效的图片格式&#xff08;如 PNG、JPG&#xff09;。 数据可能是损坏的或被错误编码&#xff08;如二进制数据未被正确处理&#xff09;…

作者头像 李华
网站建设 2026/5/26 6:36:00

微模块机房在中小企业的应用前景:从“奢侈品”到“新基建标配”

在很长一段时间里&#xff0c;微模块机房&#xff08;Micro Modular Data Center, MMDC&#xff09;被视为大型金融、电信或互联网企业的专属方案——高集成、高可靠、高成本。然而&#xff0c;随着产品形态下沉、交付模式创新以及中小企业数字化需求的爆发&#xff0c;微模块正…

作者头像 李华