104. Merge K Sorted Lists

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)

代码:

方法一:


方法二:


你可能感兴趣的:(104. Merge K Sorted Lists)