合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。

示例:
输入:
[
1->4->5,
1->3->4,
2->6
]
输出: 1->1->2->3->4->4->5->6

#include <iostream>
#include <vector>
using namespace std;
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
}; ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {//合并两个有序链表
ListNode*temp;
ListNode*t;
if(l1== nullptr) return l2;
if(l2== nullptr) return l1;
if(l1->val>l2->val)//把头节点值小的放前面
{
t=l1;l1=l2;l2=t;
}
ListNode*head=l1;
while(l2!= nullptr)
{
if(l1->next== nullptr)
{
l1->next=l2;
return head;
}
else if(l1->val<=l2->val&&l1->next->val>=l2->val)
{
temp=l2->next;
t=l1->next;
l1->next=l2;
l2->next=t;
l1=l2;
l2=temp;
}
else l1=l1->next;
}
return head;
} ListNode* mergeKLists(vector<ListNode*>& lists) { int len=lists.size();
if(len==) return nullptr;
ListNode* head=lists[];
if(len==) return head;
int n=;
while(n<len)//找到第一个不为空的链表,让头指针指向他
{
if(lists[n]!=nullptr)
{head=lists[n];
break;}
else n++;
}
if(n==len) return nullptr;//全为空
for(int i=n+;i<len;i++)
{
if(lists[n]== nullptr) continue;//跳过空的
head=mergeTwoLists(head,lists[i]);
}
return head;
} int main() {
std::cout << "Hello, World!" << std::endl;
return ;
}

#leetcode刷题之路23-合并K个排序链表的更多相关文章

  1. leecode刷题(27)-- 合并k个排序链表

    leecode刷题(27)-- 合并k个排序链表 合并k个排序链表 合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [ 1->4->5, 1-> ...

  2. LeetCode 23. 合并K个排序链表(Merge Two Sorted Lists)

    23. 合并K个排序链表 23. Merge k Sorted Lists 题目描述 合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. LeetCode23. Merge k S ...

  3. Java实现 LeetCode 23 合并K个排序链表

    23. 合并K个排序链表 合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [ 1->4->5, 1->3->4, 2->6 ] 输 ...

  4. 【LeetCode】23.合并K个排序链表

    题目描述 23.合并K个排序链表 合并k个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [ 1->4->5, 1->3->4, 2->6 ] ...

  5. Leetcode题库——23.合并k个排序链表

    @author: ZZQ @software: PyCharm @file: mergeKLists.py @time: 2018/10/12 19:55 说明:合并 k 个排序链表,返回合并后的排序 ...

  6. [LeetCode] 23. 合并K个排序链表

    题目链接: https://leetcode-cn.com/problems/merge-k-sorted-lists/ 题目描述: 合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂 ...

  7. [LeetCode]23. 合并K个排序链表(优先队列;分治待做)

    题目 合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [   1->4->5,   1->3->4,   2->6 ] 输出: 1 ...

  8. LeetCode题解-23 合并K个排序链表 Hard

    合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: 1->1-&g ...

  9. leetcode 23. 合并K个排序链表 JAVA

    题目: 合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [   1->4->5,   1->3->4,   2->6 ] 输出: ...

随机推荐

  1. VB.NET Syntax Tips

    Difference Between C# and VB.NET Namespace VB.NET [Class Namespace in IL]=[Root Namespace].[Namespac ...

  2. 在GitHub上删除项目后,在Android Studio上传项目依然提示project is already on github

    描述: 在GitHub上面上传项目,但是感觉有些问题,就想删除了重新上传. 但是在Android Studio重新上传项目时,遇到了问题,一直提示“project is already on gith ...

  3. java笔记--匿名内部类和静态内部类的理解和使用

    匿名内部类 --如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3889467.html  "谢谢-- 1.由于局部内部类并不可见 ...

  4. CentOS随笔 - 修改CentOS7的IP

    前言 转帖请注明出处: http://www.cnblogs.com/Troy-Lv5/ 在使用CentOS时经常我们需要固定一个IP, 因为服务器嘛,不固定IP. 难道每次都要配置开发环境的地址.? ...

  5. VS2013个版本密钥(亲测可用)

    Visual Studio Ultimate 2013 KEY(密钥):BWG7X-J98B3-W34RT-33B3R-JVYW9 Visual Studio Premium 2013 KEY(密钥) ...

  6. iOS设计模式 - 装饰

    iOS设计模式 - 装饰 原理图 说明 1. cocoa框架本身实现了装饰模式(category的方式实现了装饰模式) 2. 装饰模式指的是动态的给一个对象添加一些额外的职责,相对于继承子类来说,装饰 ...

  7. Storm 实现滑动窗口计数和TopN排序

    计算top N words的topology, 用于比如trending topics or trending images on Twitter. 实现了滑动窗口计数和TopN排序, 比较有意思,  ...

  8. Compare DML To Both REDO And UNDO Size

    SUMMARY you can remember undo rule  the same to redo if you want demo rule that you can look up the ...

  9. 沉淀再出发:OpenStack初探

    沉淀再出发:OpenStack初探 一.前言 OpenStack是IaaS的一种平台,通过各种虚拟化来提供服务.我们主要看一下OpenStack的基本概念和相应的使用方式. 二.OpenStack的框 ...

  10. 为什么JS中0.1+0.2 != 0.3

    为什么JS中0.1+0.2 != 0.3 在我曾经的一篇< javascript入门教程 (2) >中,讲到JS中数字运算时,我们提到过一个叫做 数字运算中的精度缺失的问题,当时我们只是简 ...