合并K个排序链表。合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。
示例:
1 |
|
1 |
|
思路一
分治法,每次合并两个链表,最终全部合并。时间复杂度 $O(n\log k)$。
1 |
|
思路二
每次比较 $k$ 个结点,取最小的结点,需要 $k$ 个指针记录每个链表当前结点位置。时间复杂度 $O(kn)$。
1 |
|
思路三
使用优先队列优化思路二。优先队列,每一个入队的元素有一个优先级,优先级高的最先出队,使用堆实现。时间复杂度 $O(n\log k)$。
1 |
|
合并K个排序链表。合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。
示例:
1 |
|
1 |
|
分治法,每次合并两个链表,最终全部合并。时间复杂度 $O(n\log k)$。
1 |
|
每次比较 $k$ 个结点,取最小的结点,需要 $k$ 个指针记录每个链表当前结点位置。时间复杂度 $O(kn)$。
1 |
|
使用优先队列优化思路二。优先队列,每一个入队的元素有一个优先级,优先级高的最先出队,使用堆实现。时间复杂度 $O(n\log k)$。
1 |
|
微信打赏
支付宝打赏