博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode03
阅读量:5989 次
发布时间:2019-06-20

本文共 737 字,大约阅读时间需要 2 分钟。

Merge K sorted link list

还是昨天的合并 K 个有序链表,今天去社区看了下,还有更简单的解决方案,时间复杂度和空间复杂度更好,大概的思路是用python的最小堆来实现,每次从堆里弹出最小元素,然后最近一次哪个链表出了最小元素就把下一个塞进堆里,很高效,很简洁,元祖(tuple)的运用是这个实现的点睛之笔,下面贴出代码

def mergeKLists(self, lists):	from heap import heappop, heapify, heapreplace	dummy = node = ListNode(0)		# 下面这一步很赞	h = [(n.val), n] for n in lists if n]		# n 转 minheap	heapify(h)	while(h):		# 取 堆里最小的值		v, n = h[0]		if n.next is None:			heappop(h)		else:			# 弹出最小值,并把同一链表的下一个最小值放进堆中			heapreplace(h, (n.next.val, n.next))		node.next = n		node = node.next	return dummy.next复制代码

Conclusion

想起了大佬 Linus 的那句话

"Bad programmers worry about the code. Good programmers worry about data structures and their relationships."

转载于:https://juejin.im/post/5c7ba8626fb9a049f23d7b11

你可能感兴趣的文章
Win10安装MySQL5.7.22 解压缩版(手动配置)方法
查看>>
Linux交流群42996402和设备驱动开发群19026441欢迎加入
查看>>
移动端优先策略下的css如何编写
查看>>
docker 创建image上传到 docker hub并下载
查看>>
我的友情链接
查看>>
mysql中 字段类型转换后进行排序
查看>>
EXCEL中从×××号判断出身日期(求excel中×××提取年龄公式详解)
查看>>
IE下Ajax提交乱码的解决办法
查看>>
Netty Reactor模式实现原理详解
查看>>
GNS3与SecureCRT的关联问题(脚本)
查看>>
C++编译器与链接器工作原理
查看>>
storm记录--8-- Storm基本API
查看>>
Day6- php 链接MySQL
查看>>
jQuery.ajax 返回JSON数据 IE8 缓存问题
查看>>
长按移动Cell/Cell排序
查看>>
HQL 语法 明细
查看>>
Java中的util.Date,sql.Date,sql.Time,String类型转换
查看>>
CentOS5.5环境下布署LVS+keepalived
查看>>
构建Java并发模型框架
查看>>
为搜索框设置默认的搜索提示文字,聚焦时清空默认文字,失焦为空时设置默认文字...
查看>>