輸入兩個遞增排序的鍊錶,合併這兩個鍊錶並使新鍊錶中的節點仍然是遞增排序的。
示例1:
輸入:1->2->4, 1->3->4
輸出:1->1->2->3->4->4
限制:0 <= 鍊錶長度 <= 1000
python
# definition for singly-linked list.
# class listnode:
# def __init__(self, x):
# self.val = x
# self.next = none
# 思路:
# 建立哨兵,利用雙指標求解
# 複雜度:
# o(n)
class
solution
:def
mergetwolists
(self, l1: listnode, l2: listnode)
-> listnode:
cur=tmp=listnode(0)
# 雙指標
# 迴圈合併
while l1 and l2:
if l1.valcur.
next
,l1=l1,l1.
next
else
: cur.
next
,l2=l2,l2.
next
cur=cur.
next
cur.
next
=l1 if l1 else l2 # 合併剩餘的尾部鍊錶
return tmp.
next
c++/**
* definition for singly-linked list.
* struct listnode
* };
*/class
solution
else
cur=cur-
>next;}if
(l1) cur-
>next=l1;
else cur-
>next=l2;
return tmp-
>next;}}
;
劍指offer25 合併兩個有序鍊錶
題目描述 輸入兩個遞增排序的鍊錶,合併這兩個鍊錶並使新鍊錶中的節點仍然是遞增排序的。解題思路 雙指標 分別指向兩個鍊錶的頭,比較大小即可。問題 如何合併?建立偽頭節點temp,節點cur指向temp,將比較後的節點插入到cur後,最後將不為null的鍊錶中剩餘節點新增到cur之後即可。參考題解 pu...
劍指offer 合併兩個鍊錶
輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。新建乙個節點作為head,依次遍歷兩個陣列 時間複雜度 o n 空間複雜度 o 1 coding utf 8 class listnode def init self,x self.val x self.ne...
劍指offer 25 合併兩個排序的鍊錶
輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。1 非遞迴的方法 如果可以改變鍊錶,直接從頭結點開始依次移動比較兩個鍊錶當前值的大小,把較小的值作為當前結點的下乙個結點。注意 剛剛開始的時候不知道頭結點到底是1的還是2的,所以新建乙個額外的新節點作為輔助 ...