題目:
給你乙個鍊錶陣列,每個鍊錶都已經按公升序排列。示例 1:請你將所有鍊錶合併到乙個公升序鍊錶中,返回合併後的鍊錶。
輸入:lists = [[1,4,5],[1,3,4],[2,6]]示例 2:輸出:[1,1,2,3,4,4,5,6]
解釋:鍊錶陣列如下:
[1->4->5,
1->3->4,
2->6
]將它們合併到乙個有序鍊錶中得到。
1->1->2->3->4->4->5->6
輸入: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...