每日一題 23 合併K個排序鍊錶

2021-10-07 22:12:25 字數 791 閱讀 2260

合併 k 個排序鍊錶,返回合併後的排序鍊錶。請分析和描述演算法的複雜度。

輸入

[1->4->5,

1->3->4,

2->6

]輸出

1->1->2->3->4->4->5->6

參考力扣大佬的思路,僅僅將比較器使用lambda表示式將語法簡化。

主要思路是使用優先佇列,步驟如下:

1.依次將各個有序鍊錶的表頭壓入優先佇列(小頂堆);

2.構建乙個虛擬表頭,當佇列非空時,將佇列中的元素彈出,接在虛擬表頭後面;

3.如果彈出的節點後續節點非空,則將後續節點壓入佇列;

4.直到隊列為空,返回虛擬節點的後續節點。

class

solution

priorityqueue

queue =

newpriorityqueue

<

>

(lists.length,

(node1, node2)

-> node1.val - node2.val)

; listnode dummy =

newlistnode(0

);listnode p = dummy;

for(listnode node : lists)

}while

(!queue.

isempty()

)}return dummy.next;

}}

每日一題打卡 23 合併K個排序鍊錶

23.合併k個排序鍊錶 難度困難605 合併 k 個排序鍊錶,返回合併後的排序鍊錶。請分析和描述演算法的複雜度。示例 輸入 1 4 5,1 3 4,2 6 輸出 1 1 2 3 4 4 5 6 definition for singly linked list.public class listno...

leetcode每日一題 合併k個排序鍊錶

合併 k 個排序鍊錶,返回合併後的排序鍊錶。請分析和描述演算法的複雜度。示例 輸入 1 4 5,1 3 4,2 6 輸出 1 1 2 3 4 4 5 6 這個思路是我最先想到的思路,通過對鍊錶兩兩進行合併,得到排序好的鍊錶。時間複雜度是o n logk o nlogk o nlog k 也比較簡單,...

K個公升序鍊錶合併 (每日一題)

給你乙個鍊錶陣列,每個鍊錶都已經按公升序排列。請你將所有鍊錶合併到乙個公升序鍊錶中,返回合併後的鍊錶。示例 輸入 lists 1,4,5 1,3,4 2,6 輸出 1,1,2,3,4,4,5,6 解釋 鍊錶陣列如下 1 4 5,1 3 4,2 6 將它們合併到乙個有序鍊錶中得到。1 1 2 3 4 ...