前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Leetcode打卡 | No.23 合并 k 个有序链表

Leetcode打卡 | No.23 合并 k 个有序链表

作者头像
小小詹同学
发布于 2018-09-25 09:55:18
发布于 2018-09-25 09:55:18
70000
代码可运行
举报
文章被收录于专栏:小詹同学小詹同学
运行总次数:0
代码可运行

写在前边:

欢迎和小詹一起定期刷leetcode,每周一和周五更新一题,每一题都吃透,欢迎一题多解,寻找最优解!这个记录帖哪怕只有一个读者,小詹也会坚持刷下去的!

PS:从第10开始,代码以图片形式给出,方便手机用户阅读,避免左右滑不便阅读,完整代码会上传GitHub上了:https://github.com/Jan1995/LeetCode


No.23 合并 k 个有序链表

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

示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
输入:[
  1->4->5,
  1->3->4,
  2->6
]输出: 1->1->2->3->4->4->5->6

这一题可以看作是前边第 21 题的升级版 ,小伙伴们可以温故一下之前类似的题目 :

Leetcode打卡 | No.21 合并两个有序链表

这里是 k 个有序链表 ,小詹看到第一反应是直接递归使用前边合并两个有序链表的思路 ,对 ,完全没毛病的 。然后参考答案里是类似的 ,只不过合并的方式不一样 ,这里采取的是两两合并的方式 ,过程见下图 :

这里可以很清晰的看懂思路 ,实现代码如下 :

这种方式的结果大概是 beat 65% 左右 ,还有一种看起来比较复杂的办法 ,但是结果却很赞 。大体思路分为三步 :

  1. 创建一个列表
  2. 将所有链表的元素值 append 进列表
  3. 进行排序 ,之后再转换为链表结构

代码实现如下 :

题目中要求描述下算法复杂度 ,这里以第二种 "三步曲" 的算法为例描述 ,另一方法读者自行尝试下哦 。

  1. 时间复杂度 ,分为三步分别考虑 ,首先将所有链表节点值收集到列表中时间复杂度为 O(N) ;排序使用 python 的 sorted ,这里插一句 ,公号前期文章有 8 大排序算法的介绍 ,这步复杂度为 O(NlogN) ;第三步则是再创建链表 ,转换为目标结构为 O(N)
  2. 空间复杂度 ,排序过程的空间复杂度取决于使用的算法 ,创建列表过程为 O(N)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-08-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小詹学Python 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Leetcode打卡 | No.21 合并两个有序链表
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
小小詹同学
2018/08/17
4340
Leetcode打卡  |  No.21 合并两个有序链表
Leetcode打卡 | No.25 k 个一组翻转链表
欢迎和小詹一起定期刷leetcode,每周一和周五更新一题,每一题都吃透,欢迎一题多解,寻找最优解!这个记录帖哪怕只有一个读者,小詹也会坚持刷下去的!
小小詹同学
2019/11/12
4010
Leetcode打卡 | No.24 两两交换链表中的节点
欢迎和小詹一起定期刷leetcode,每周一和周五更新一题,每一题都吃透,欢迎一题多解,寻找最优解!这个记录帖哪怕只有一个读者,小詹也会坚持刷下去的!
小小詹同学
2018/09/25
4770
Leetcode打卡  |  No.24 两两交换链表中的节点
【刷穿 LeetCode】23. 合并K个升序链表(困难)
做有关链表的题目,有个常用技巧:添加一个虚拟头结点(哨兵),帮助简化边界情况的判断。
宫水三叶的刷题日记
2021/02/20
3400
Leetcode打卡 | No.18 四数之和
欢迎和小詹一起定期刷leetcode,每周一和周五更新一题,每一题都吃透,欢迎一题多解,寻找最优解!这个记录帖哪怕只有一个读者,小詹也会坚持刷下去的!
小小詹同学
2018/08/03
5570
Leetcode打卡  |  No.18 四数之和
LeetCode:合并K个升序链表_23
这题是21的升级版,从两路归并到多路归并,其中运用了优先队列来优化。感觉这题谈不上困难,只是运用了两个知识点,逻辑不复杂。
Yuyy
2022/06/28
2530
leetCode005|合并k个排序链表
由于前段时间自己说自己完成了大学时期一直未学习的内容之后,自己文章的更新速度是越来越慢了,因为这是自己在刻意放慢速度,跑的更快未必更好,能跟随内心的速度就可以了,一味求快,不符合自己目前的追求。今天要分享的内容就是合并k个排序链表。写这道题的目的主要是为了固化一下自己的知识内容,当从新看到这道题时自己觉得我只知道了基本的解题思路,代码还是要自己编写,所以为了固化一下,自己就分享这篇文章了。
码农王同学
2020/08/06
3080
Leetcode No.23 合并K个升序链表
输入:lists = [[1,4,5],[1,3,4],[2,6]] 输出:[1,1,2,3,4,4,5,6] 解释:链表数组如下: [ 1->4->5, 1->3->4, 2->6 ] 将它们合并到一个有序链表中得到。 1->1->2->3->4->4->5->6
week
2020/12/01
3980
合并K个有序链表
把每个链表得头放进小根堆里,这样每次取得都是全部链表得最小值,同时每次取出来一个结点后如果这个结点后面还有结点就继续放进去.
名字是乱打的
2021/12/22
4840
合并K个有序链表
合并K个升序链表(LeetCode 23)
我们可以想到一种最朴素的方法,依次将链表数组中的链表与最终结果合并。问题便退化成合并两个有序链表。
恋喵大鲤鱼
2024/01/20
2220
合并K个升序链表(LeetCode 23)
LeetCode题目23:合并K个排序链表
原题链接:https://leetcode-cn.com/problems/merge-k-sorted-lists
二环宇少
2020/08/13
3620
LeetCode题目23:合并K个排序链表
☆打卡算法☆LeetCode 23、合并K个升序链表 算法解析
链接:23. 合并K个升序链表 - 力扣(LeetCode) (leetcode-cn.com)
恬静的小魔龙
2022/08/07
1360
☆打卡算法☆LeetCode 23、合并K个升序链表  算法解析
刷题之合并K个排序链表
从21. 合并两个有序链表的基础上,我们已经能够解决两个有序链表的问题,现在是k个有序链表,我们可以将第一二个有序链表进行合并,然后将新的有序链表再继续跟第三个有序链表合并,直到将所有的有序链表合并完成。 这样做思路上是可行的,但是算法的时间复杂度将会很大,具体就不计算了。有兴趣的自己计算下。
小歪
2019/05/06
6510
LeetCode题解—两个有序链表合并
关于空间复杂度,有可能有的朋友会觉得用到了m+n长度的链表?所以空间复杂度也是O(m+n)?
码上积木
2021/02/08
2.2K0
LeetCode题解—两个有序链表合并
超详细!图解「合并 K 个排序链表」
今天分享的题目来源于 LeetCode 第 23 号问题:合并 K 个排序链表。本文采取两种思路进行分析。
五分钟学算法
2019/11/13
1.5K0
超详细!图解「合并 K 个排序链表」
golang刷leetcode 技巧(66)合并K个排序链表
4,注意长度可能是奇数,即使是偶数,两两合并后可能是奇数,需要特殊处理,否则数组越界问题很难处理,很容易死循环
golangLeetcode
2022/08/02
4030
LeetCode - #23 合并 K 个升序链表(Top 100)
我们社区陆续会将顾毅(Netflix 增长黑客,《iOS 面试之道》作者,ACE 职业健身教练。微博:@故胤道长[1])的 Swift 算法题题解整理为文字版以方便大家学习与阅读。
Swift社区
2022/04/04
3110
LeetCode - #23 合并 K 个升序链表(Top 100)
七十、反转和合并链表、 链表有环的判断
最近在重新梳理学算法的知识,本文为链表常见操作复习的总结文章,会讲解常见的链表题目实现思路及附上答案,这些题目在leetcode上对应的题号也有给出,好好学习算法吧~
润森
2022/08/17
4810
七十、反转和合并链表、 链表有环的判断
合并 K 个升序链表
狼啸风云
2024/02/18
1100
合并 K 个升序链表
合并K个排序链表
每周两篇leetcode刷题,今天本周第二篇,一起来看合并K个排序链表,下面一起来实战吧!
公众号guangcity
2019/09/20
4800
相关推荐
Leetcode打卡 | No.21 合并两个有序链表
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验