problem
LeetCode 23. Merge k Sorted Lists
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
solution
方法一
思路过程
- 用堆排序,思路可以查考使用堆(heap)(官解中的"归并排序")思路详解;另附Python heapq模块用法解释这篇文章,将算法的思路解析得很清晰,然后运用过来就行了
代码
python
import heapq
class Solution:
def mergeKLists(self, lists):
length = len(lists)
# 有没有可能第一个就是None
end = 0
heap = []
# 用来当作头节点
res = ListNode(0)
temp = res
for i in range(length):
if lists[i]:
# heap.append((lists[i].val, lists[i]))
# 所有都遍历完毕的时候就跳出循环
# 这里heapq。heapify(heap)似乎有相同值时,会对列表中下一个元素排序,但是后面是ListNode,报错
# TypeError: '<' not supported between instances of 'ListNode' and 'ListNode'
# heapq.heapify(heap)
# 所以改成下面这样的,每层不一样就区分了不同的元素
heap.append((lists[i]