題目:
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.
給定一個k鍊錶數組lists,每個鍊錶按升序排列。
將所有連結列表合併為一個已排序的連結列表並返回。
題目說明
給定一個陣列,裡面有 k 條已排序的單向鏈表,要求將它們合併成一條 排序好的鏈表,並回傳頭節點。
解題思路
這題有幾種解法:
方法一:逐一合併 (Brute Force)
依次把每條鏈表合併到結果鏈表裡。
時間複雜度 O(k·n),效率偏低。
方法二:分治法 (Divide & Conquer)
將 k 條鏈表兩兩合併,類似「歸併排序」的過程。
每次合併兩條鏈表的時間 O(n),總複雜度 O(n log k)。
方法三:最小堆 / 優先佇列 (PriorityQueue)
把每條鏈表的頭節點放入最小堆(依節點值排序)。
每次取出堆頂(最小值),並把該節點的下一個節點放回堆。
不斷取出直到堆空。
複雜度 O(n log k),其中 n 是所有節點數。