Description
Merge k sorted linked lists and return it as one sorted list.
Analyze and describe its complexity.
Example
Example 1:
Input: [2->4->null,null,-1->null]
Output: -1->2->4->null
Example 2:
Input: [2->6->null,5->null,7->null]
Output: 2->5->6->7->null
思路:
方法一:使用 PriorityQueue,这个方法需要先覆盖listnode类里的比较函数,否则不能把node放进堆里, 另外每次都只在堆里放K个node,等一个出去之后再把它的next放进来,这样放进堆的时间复杂度就会是logk。
方法二:类似归并排序的分治算法,这里要注意和list归并排序的异同, 以及返回什么值和返回值的用法。
方法三:自底向上的两两归并算法
时间复杂度均为 O(NlogK)
代码:
方法一:
方法二:
网友评论