当前位置:网站首页>Leetcode 23.合并K个升序链表 链表归并合并
Leetcode 23.合并K个升序链表 链表归并合并
2022-08-08 18:26:00 【Alkali!】
题目描述
合并K个升序链表:原题链接
给你一个链表数组,每个链表都已经按升序排列。
请你将所有链表合并到一个升序链表中,返回合并后的链表。
思路
直接按照归并排序的思路来归并每一条链表。
要注意一些边界情况:
- K = 0 K=0 K=0
- K ! = 0 K!=0 K!=0但是 K K K个链表中所有链表都是NULL的
这两种情况归并完都是NULL,直接返回NULL
其他情况,我们都用归并的方法归并。
代码
大循环的控制思路是一直归并,直到原来的几条链表上的元素被拿空。
用一个变量count
来控制。
class Solution {
public:
ListNode* mergeKLists(vector<ListNode*>& lists) {
if(lists.size()==0) //如果本来K==0,那么直接返回空
return NULL;
bool flag=false;
int count=0;
for(int i=0;i<lists.size();i++)
if(lists[i]!=NULL)
flag=true;
else
count++; //count这里记录下本身就是空的链表的个数
if(!flag) return NULL; //如果虽然K!=0,但是所有链表都是空的,也返回NULL
ListNode *cur=new ListNode(),*tmp,*res=cur;
while(count!=lists.size())
{
//在每个链表头找最小的元素,以及该链表的下标
int Min=1e4+10;
int t=-1;
for(int i=0;i<lists.size();i++)
{
if(!lists[i]) continue; //如果碰到空的链表了,跳过
ListNode *p=lists[i];
if(p->val<=Min)
{
Min=p->val;
t=i;
}
}
//接到结果链表上
tmp=new ListNode(Min);
cur->next=tmp;
cur=tmp;
//把原来链表上这个元素拿掉
lists[t]=lists[t]->next;
if(!lists[t]) count++; //如果拿完,当前链表就为空了,则count记录一下
}
res=res->next; //要把一开始的首部0结点给过滤掉
return res;
}
};
边栏推荐
- 如何在Firewalld中为特定IP地址开放端口
- OpenSSH生成的私钥如何在putty中使用?
- Redis之SDS数据结构
- How to add F4 Value Help trial version to the input parameters of the report in the ABAP report
- 21天学习挑战赛——机器学习01
- Research on ORACLE subqueries that lead to inability to push predicates
- Dataworks上的ODPS spark处理数据会比直接用ODPS SQL效率高吗?
- Flush can buy stock?Is it safe to buy stocks?
- HCIP第十三天作业——综合实验
- SUSECON 北京议程上新丨8月16日相聚望京凯悦
猜你喜欢
随机推荐
Lecture 4: Database Definition Language of DDL Type of SQL Statements
uniapp父组件使用prop将异步的数据传给子组件
水印图像读取与制作,三通道图转为4通道,制作透明图
ADB安装方法:
shake数据库中 启动报这个错,请问是哪里配置有问题吗?
Learn about layered architecture & SOA architecture together
性能优化|从ping延时看CPU电源管理
We want to replace the RDS database and upgrade from sqlserver 2016 web to 2017 enterprise cluster version, with expert consultation
架构设计基本原则
Redhat 7 Maria DB安装与配置
JVM内存模型和结构详解(五大模型图解)
JDBC最详讲解(快速入门)
ORACLE子查询 导致无法谓词推入的研究
PX4模块设计之十八:Logger模块
Neo4j: 1. CQL statement
3D角色建模师和3D角色动画师哪个更有前景?哪个更适合小白入门?
面试官:synchronized 和 Lock 的区别是什么?
请问shake数据库中mongoshake同步过程中,src_mongo挂了,同步服务不会退出吗?
Fortinet全新云原生保护产品上线亚马逊云科技平台
黑磷量子点/无机荧光量子点/石墨烯量子点水凝胶/量子点/纳米水凝胶荧光探针的研究制备