劍指 Offer 25 合併兩個排序的鍊錶

2021-10-08 03:50:17 字數 1060 閱讀 6405

輸入兩個遞增排序的鍊錶,合併這兩個鍊錶並使新鍊錶中的節點仍然是遞增排序的。

示例1:

輸入:1->2->4, 1->3->4

輸出:1->1->2->3->4->4

限制:0 <= 鍊錶長度 <= 1000

解:原地修改:雙指標各指乙個原鍊錶,比較大小,新增較小節點至合併鍊錶,雙指標交替前進。

時間複雜度o(m+n),空間複雜度o(1)。

class

solution

else

l3 = l3-

>next;

} l3-

>next = l1 ? l1:l2;

return head-

>next;

//真頭結點

//遞迴

//函式功能:返回兩引數中節點值較小的節點,並將其鏈至當前節點尾部

if(l1 ==

null

)return l2;

if(l2 ==

null

)return l1;

if(l1-

>val < l2-

>val)

l2->next =

mergetwolists

(l1,l2-

>next)

;return l2;

//新建鍊錶

/*listnode* head = null;

listnode* cur1 = l1;

listnode* cur2 = l2;

listnode* cur3 = new listnode;

while(cur1 && cur2)

else

cur3->next = node;

cur3 = cur3->next;

if(!head) head = cur3;

}listnode* cur = cur1 ? cur1:cur2;

for(cur;cur;cur = cur->next)

return head;*/}}

;

劍指offer 25 合併兩個排序的鍊錶

輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。1 非遞迴的方法 如果可以改變鍊錶,直接從頭結點開始依次移動比較兩個鍊錶當前值的大小,把較小的值作為當前結點的下乙個結點。注意 剛剛開始的時候不知道頭結點到底是1的還是2的,所以新建乙個額外的新節點作為輔助 ...

劍指offer25 合併兩個排序的鍊錶

題目 輸入兩個遞增排序的鍊錶,合併這兩個鍊錶並使新鍊錶中的節點仍然使遞增排序的。例如 輸入下圖的鍊錶1和鍊錶2,則合併之後的公升序鍊錶如圖鍊錶3所示。鍊錶定義如下 思路 從兩個鍊錶的頭結點開始,比較兩個鍊錶的頭結點的值大小,值小的結點就是合併後鍊錶的頭結點,繼續合併鍊錶中剩餘的節點,在兩個鍊錶中剩下...

劍指offer 25 合併兩個排序的鍊錶

輸入兩個遞增排序的鍊錶,合併這兩個鍊錶並使新鍊錶中的節點仍然是遞增排序的。輸入 1 3 5 2 4 5 輸出 1 2 3 4 5 5 二路歸併 新建乙個頭節點pmergedhead,並設定乙個指標pcurrenthead指向pmergedhead比較phead1和phead2指標指向的值 phead...