当前位置:网站首页>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;
}
};
边栏推荐
猜你喜欢

openEuler资源利用率提升之道02:典型应用下的效果

Shell脚本三剑客(grep、sed、awk)

Go-Excelize API源码阅读(四)——Save()

几何g6将搭载harmonyos系统,产品竞争力全面升级

MogDB学习笔记-从0开始

openEuler 社区 2022 年 7 月运作报告

黑磷量子点/无机荧光量子点/石墨烯量子点水凝胶/量子点/纳米水凝胶荧光探针的研究制备

Lecture 4: Database Definition Language of DDL Type of SQL Statements

How to add F4 Value Help to the input parameters of the report in the ABAP report

面了个腾讯30k+出来的,他让我见识到什么叫精通MySQL调优
随机推荐
what's the meaning of xenial
21天学习挑战赛——机器学习01
uva1468
Neo4j: 1. CQL statement
架构设计基本原则
什么是Shell?从小白到入门你只差一个它
PG's huge page
feign的性能优化、Feign的使用-最佳优化两种方案
OpenInfra Days China 2022即将开启,与 openEuler 共话开源技术
十六、一起学习Lua 文件 I/O
hdu1042 N! (large number)
Digital currency perpetual contract exchange development and development functions and code presentation
torchvision.transforms
熬夜拜读349页阿里面试通关手册,成功闯入字节
黑磷量子点/无机荧光量子点/石墨烯量子点水凝胶/量子点/纳米水凝胶荧光探针的研究制备
16. Learn Lua file I/O together
在线支付,出款和收款
Smobiler的复杂控件的由来与创造
倒置字符串
21天学习挑战赛——机器学习03