融合兩個排序過的連結串列為一個新的連結串列後回傳。
問題描述:
l1
和 l2
,需要合併這兩個鏈表,使得合併後的鏈表仍然保持排序狀態。思路分析:
l1
和 l2
的值,將較小的節點連接到合併鏈表中。步驟分解:
dummy
作為合併鏈表的頭節點,並設置一個指針 current
指向 dummy
。l1
和 l2
的節點值:
l1
的節點值小於 l2
,將 l1
的節點連接到 current
,然後移動 l1
指針。l2
的節點連接到 current
,然後移動 l2
指針。dummy->next
。class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
// 創建虛擬節點
ListNode* dummy = new ListNode(0);
ListNode* current = dummy;
// 逐步合併兩個鏈表
while (l1 != nullptr && l2 != nullptr) {
if (l1->val < l2->val) {
current->next = l1; // 將 l1 的節點添加到合併鏈表中
l1 = l1->next; // 移動 l1 指針
} else {
current->next = l2; // 將 l2 的節點添加到合併鏈表中
l2 = l2->next; // 移動 l2 指針
}
current = current->next; // 移動 current 指針
}
// 將剩餘的鏈表添加到合併鏈表中
if (l1 != nullptr) {
current->next = l1;
} else {
current->next = l2;
}
// 返回合併後的鏈表
return dummy->next;
}
};