You are given an array of k
linked-lists lists
, each linked-list is sorted in ascending order.
Merge all the linked-lists into one sorted linked-list and return it.
Example 1:
Example 2:
Constraints:
Related Topics: Linked List
Divide and Conquer
Heap (Priority Queue)
Merge Sort
之前有解過寫過一篇 0021. Merge Two Sorted Lists,這題就是它的進階。
我打算按照提示中的分而治之(Divide and Conquer)法與遞迴不斷將鏈結串列剖半對分,直到剩下一個或是兩個鏈結串列時,開始合併與回傳。
以長度為 6 的鏈結串列 [A, B, C, D, E, F] 為例,用遞迴去剖半對分的話最終會是 A、B 排,AB 排後再跟 C 排,再 D、E 排,DE 排後再跟 F 排,最後 ABC 與 DEF 再排一次,總共執行了 5 次。
Runtime 為 112 ms,Beats 是 78.87%。不過它效率比我想像中的還差。
因此我打算換個寫法試試,一樣是分而治之法,不過把它改成直接兩兩抓來做排序,就是 A、B 排、C、D 排、C、D 排:
效果出來出乎意料的不錯欸,Runtime 96 ms、Beats 95.64%。
偷看了下 70ms 的答案,因為它直接用 sort 難怪效能不錯 XDDD