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逢渔,這個(gè)方法需要先覆蓋listnode類里的比較函數(shù)肋坚,否則不能把node放進(jìn)堆里乡括, 另外每次都只在堆里放K個(gè)node肃廓,等一個(gè)出去之后再把它的next放進(jìn)來,這樣放進(jìn)堆的時(shí)間復(fù)雜度就會是logk诲泌。
方法二:類似歸并排序的分治算法,這里要注意和list歸并排序的異同盲赊, 以及返回什么值和返回值的用法。
方法三:自底向上的兩兩歸并算法
時(shí)間復(fù)雜度均為 O(NlogK)
代碼:
方法一:
方法二: