news 2026/4/3 4:41:46

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/3/31 11:28:37

4.8 Langfuse vs. LangSmith:两大主流 LLMOps 平台深度对比与选型指南

4.8 Langfuse vs. LangSmith:两大主流 LLMOps 平台深度对比与选型指南 导语:在 AI 应用可观测性(LLMOps)的江湖中,有两个名字你一定绕不开:Langfuse 和 LangSmith。前者是我们本周深度学习和实践的开源利器,后者则是 LangChain 官方出品、与自家生态无缝集成的“原厂”配…

作者头像 李华
网站建设 2026/4/1 5:17:18

基于单片机实现智能物联系统设计

基于单片机的智能物联系统设计 第一章 绪论 传统物联网系统常面临设备兼容性差、传输延迟高、部署成本高的问题&#xff1a;不同品牌传感器协议不互通&#xff0c;数据集成困难&#xff1b;依赖专用网关&#xff0c;传输距离受限&#xff08;室内≤10米&#xff09;&#xff1b…

作者头像 李华
网站建设 2026/3/31 18:29:00

5.7 医疗 Agent 实战:构建一个懂“望闻问切”的智能医疗咨询助手

5.7 医疗 Agent 实战:构建一个懂“望闻问切”的智能医疗咨询助手 导语:纸上得来终觉浅,绝知此事要躬行。在本课程的最后一个实战项目中,我们将把第五周的所有核心技术——LoRA 微调与 vLLM 部署——落地到一个具体、有价值的应用场景中。我们将亲手构建一个“智能医疗咨询助…

作者头像 李华
网站建设 2026/3/20 23:57:57

一次5G视频通话,搞定贷款面审合规、安全、高效三诉求

在金融服务与远程业务办理中&#xff0c;如何在提升审批效率的同时&#xff0c;有效控制风险、保障流程合规&#xff0c;始终是机构面临的核心挑战。面对用户对“即时办理”体验的迫切需求&#xff0c;以及机构对身份欺诈、材料造假等风险的深度关切&#xff0c;传统依赖电话核…

作者头像 李华
网站建设 2026/4/1 3:05:44

如何快速写出高效的软件测试用例?

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快编写测试用例的目的就是确保测试过程全面高效、有据可查。但要编写出高效的测试用例&#xff0c;需要搞清楚什么是测试用例&#xff0c;以及如何编写出高效的测试用…

作者头像 李华
网站建设 2026/3/28 3:25:17

RAG学习全流程,存一下吧很难找全了

最近一年&#xff0c;LLM展示了强大的能力&#xff0c;但是面对幻觉、最新的知识以及复杂任务时往往略显不足。RAG&#xff08;Retrieval Augmented Generation&#xff0c;检索增强生成&#xff09;通过集成外部知识库来解决类似问题&#xff0c;取得了很不错的效果。 这里&…

作者头像 李华