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

2021-10-08 17:52:55 字數 1168 閱讀 8376

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

示例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的,所以新建乙個額外的新節點作為輔助 ...