Leetcode 合併K個公升序鍊錶問題

2021-10-25 07:45:27 字數 1037 閱讀 6229

題目:

給你乙個鍊錶陣列,每個鍊錶都已經按公升序排列。

請你將所有鍊錶合併到乙個公升序鍊錶中,返回合併後的鍊錶。

示例 1:

輸入: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->4->5->6

示例 2:

輸入:lists =

輸出:

示例 3:

輸入:lists = 輸出:

思路:

總體思路與之前寫的合併兩個公升序列表相似,我們寫乙個合併兩個公升序列表的方法,首先設定乙個啞節點yummy位於head節點之前,再設定乙個prehead等於yummy,然後對a、b列表進行迴圈判斷,當a.vala,且a->a.next。反之,pre.next指向b,b指向b.next,判斷結束後,將prehead指標指向pre.next,即右移一位。

同時,要考慮兩個列表的長度問題,當a列表為空時,pre.next->b即可,反之pre.next->a;最後返回yummy.next即是兩個列表的有序合併。

多個公升序列表合併,即可當作順序合併,用乙個變數res來維護以及合併的鍊錶,第 i 次迴圈把第 i 個鍊錶和res合併,答案儲存到res中。

**如下:

public

class

listnode

listnode

(int val)

listnode

(int val, listnode next)

}

LeetCode 合併K個公升序鍊錶

原題鏈結 23.合併k個公升序鍊錶 給你乙個鍊錶陣列,每個鍊錶都已經按公升序排列。請你將所有鍊錶合併到乙個公升序鍊錶中,返回合併後的鍊錶。示例 1 輸入 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 將它們合併到...

leetcode 困難 合併k個公升序鍊錶

思路一 鍊錶逐個兩兩合併 超時了 參考 leetcode 簡單 21 合併兩個有序鍊錶 definition for singly linked list.class listnode def init self,val 0,next none self.val val self.next next...

leetcode 合併K個公升序鍊錶 23

給你乙個鍊錶陣列,每個鍊錶都已經按公升序排列。請你將所有鍊錶合併到乙個公升序鍊錶中,返回合併後的鍊錶。遍歷所有鍊錶將節點值加入列表中,對列表進行公升序 根據列表建立新的鍊錶 將所有鍊錶元素新增至列表中,然後對列表進行排序,然後基於列表建立鍊錶,def mergeklists v0 self,list...