题目英文

Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.

Example:

Input:
[1->4->5,1->3->4,2->6
]
Output: 1->1->2->3->4->4->5->6

题目中文

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

示例:

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

算法实现

第一种方式:每次选择值最小的节点插入到链表中。

/*** Definition for singly-linked list.* public class ListNode {*     public int val;*     public ListNode next;*     public ListNode(int x) { val = x; }* }*/
public class Solution {public ListNode MergeKLists(ListNode[] lists) {int len = lists.Length;if (len == 0)return null;ListNode pHead = new ListNode(int.MaxValue);ListNode temp = pHead;while (true){bool isBreak = true;int min = int.MaxValue;int minIndex = 0;for (int i = 0; i < len; i++){if (lists[i] != null){if (lists[i].val < min){minIndex = i;min = lists[i].val;}isBreak = false;}}if (isBreak){break;}temp.next = lists[minIndex];temp = temp.next;lists[minIndex] = lists[minIndex].next;}temp.next = null;return pHead.next;        }
}

第二种方式:利用 合并两个有序链表 的方法。

/*** Definition for singly-linked list.* public class ListNode {*     public int val;*     public ListNode next;*     public ListNode(int x) { val = x; }* }*/
public class Solution {public static ListNode MergeTwoLists(ListNode l1, ListNode l2) {ListNode pHead = new ListNode(int.MaxValue);ListNode temp = pHead;while (l1 != null && l2 != null){if (l1.val < l2.val){temp.next = l1;l1 = l1.next;}else{temp.next = l2;l2 = l2.next;}temp = temp.next;}if (l1 != null)temp.next = l1;if (l2 != null)temp.next = l2;return pHead.next;}public ListNode MergeKLists(ListNode[] lists) {if (lists.Length == 0)return null;ListNode result = lists[0];for (int i = 1; i < lists.Length; i++){result = MergeTwoLists(result, lists[i]);}return result;}
}

实验结果

第一种方式的提交结果

  • 状态:通过
  • 131 / 131 个通过测试用例
  • 执行用时:772 ms

第二种方式的提交结果

  • 状态:通过
  • 131 / 131 个通过测试用例
  • 执行用时:332 ms


相关图文

  • LeetCode实战:两数之和
  • LeetCode实战:删除链表的倒数第N个节点
  • LeetCode实战:合并两个有序链表
  • LeetCode实战:两两交换链表中的节点
  • LeetCode实战:旋转链表
  • LeetCode实战:相同的树
  • LeetCode实战:对称二叉树
  • LeetCode实战:二叉树的最大深度
  • LeetCode实战:搜索二维矩阵
  • LeetCode实战:将有序数组转换为二叉搜索树
  • 资料分享:数学建模资料分享 – 图论部分
  • 资料分享:数学建模资料分享 – 神经网络部分
  • 如何利用 C# 实现 K 最邻近算法?
  • 如何利用 C# 实现 K-D Tree 结构?
  • 如何利用 C# + KDTree 实现 K 最邻近算法?
  • 如何利用 C# 对神经网络模型进行抽象?
  • 如何利用 C# 实现神经网络的感知器模型?
  • 如何利用 C# 实现 Delta 学习规则?
  • 如何利用 C# 实现 误差反向传播 学习规则?
  • 如何利用 C# 爬取带 Token 验证的网站数据?
  • 如何利用 C# 向 Access 数据库插入大量数据?
  • 如何利用 C# + Python 破解猫眼电影的反爬虫机制?

LeetCode实战:合并K个排序链表相关推荐

  1. LeetCode 23. 合并K个排序链表(优先队列)

    文章目录 1. 题目信息 2. 思路 3. 代码 1. 题目信息 合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例:输入: [1->4->5,1->3-& ...

  2. leetcode 23. 合并K个排序链表

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

  3. 刻意练习:LeetCode实战 -- Task12. 合并K个排序链表

    背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务.本期训练营采用分类别练习的模式,即选择了五个知识点(数组.链表.字符串.树.贪心算法),每个知 ...

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

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

  5. 【LeetCode刷题】23. 合并K个排序链表

    23. 合并K个排序链表 题目 思路1 - 普通思路 思路2 - 逐一比较 思路3 – 逐一两两合并 思路4 – 优先级队列(小顶堆) 思路5 – 分治策略 题目 链接:23. 合并K个排序链表 合并 ...

  6. [leetcode-JavaScript]---23、合并K个排序链表

    题目 合并 k 个排序链表,返回合并后的排序链表 示例: 输入:[1->4->5,1->3->4,2->6]输出: 1->1->2->3->4-& ...

  7. [剑指offer][JAVA]面试题[第23题][合并K个排序链表][分治][优先队列]

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

  8. 超详细!动画图解「合并 K 个排序链表」

    点击蓝色"五分钟学算法"关注我哟 加个"星标",天天中午 12:15,一起学算法 作者 | 李威 来源 | 五分钟学算法 今天分享的题目来源于 LeetCode ...

  9. 合并k个排序链表(Python实现)

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

最新文章

  1. I00039 亲密数(Amicable numbers)
  2. git误删文件找回方法/git版本回退方法
  3. C语言程序设计 数组,结构体和指针练习题
  4. [html] 举例说明HTML5出来后,有哪些HTML标签被弃用了?
  5. DB2常用函数:字符串函数
  6. 20140524数据库课笔记
  7. Android编程之DialogFragment源码详解(一)
  8. Ubuntu 12.04 更新重启无法进入桌面 -转
  9. 数值优化(二):信赖域方法与二维空间法
  10. CodeJock 实现MFC换肤
  11. [3]、Swagger——解决前后端打架问题
  12. IOS-Tom猫小游戏实现
  13. 玩转树莓派——游戏主机模拟器
  14. 谷歌浏览器xpath插件的安装
  15. 广西大学计算机与电子信息学院李智,赵进创,广西大学 计算机与电子信息学院...
  16. win7 eclipse调用虚拟机ubuntu部署的hadoop2.2.0伪分布(1)
  17. 男宝女宝如厕训练有不同,你做对了吗?
  18. Java课设设计-家庭财务管理系统
  19. matlab画banana函数,MATLAB 必须知道的基本操作.m
  20. Ubuntu 16.04 LTS 安装libvips出现”Package vips was not found in the pkg-config search path”

热门文章

  1. 应用设计模式进行重构来消除坏味道
  2. (C++)1012 数字分类
  3. led伏安特性实验误差分析_检测实验室误差分析知识汇编
  4. Java新手会遇到的三大误区,一定要避免!
  5. CSS题目系列(3)- 实现文字切割效果
  6. WSUS Troubleshooting guide
  7. Python迁移MySQL数据到MongoDB脚本
  8. 腾讯微博快速有效增加广播转播量的方法与技巧
  9. 最近要换个主机,现在的太慢了
  10. 为什么有些老板要注册很多家公司