题目描述
合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。
示例:
1 | 输入: |
题解
K指针
参考21题合并两个有序链表的题目, 思路就是查看当前K个链表的头结点值的大小, 挑选出最小的节点, 把它接在cur
后面
1 | public ListNode mergeKLists(ListNode[] lists) { |
小根堆
利用堆的结构, 先将K个头结点放入堆中, 那么堆顶的节点必定是最小的节点, 将其接在cur
节点之后. 将弹出节点的next
节点继续放入堆中, 使堆有进有出并且保证堆顶的节点一直是最小的.
1 | public ListNode mergeKLists(ListNode[] lists) { |