题目:合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。(困难)
输入:
[
1->4->5,
1->3->4,
2->6
]
输出: 1->1->2->3->4->4->5->6
方法一:顺序合并(略)
方法二:分治合并(略)
方法三:最小堆(优先队列):
heapq模块:
python最小堆heapq有两种方式创建堆, 一种是使用一个空列表,然后使用heapq.heappush()函数把值加入堆中,另外一种就是使用heap.heapify(list)转换列表成为堆结构。
相关函数:
- heapq.heappop() 函数弹出堆中最小值
- heapq.heaprepalce() 删除堆中最小元素并加入一个元素
- heapq.nlargest() 或 heapq.nsmalle