合併兩個排序的鍊錶

2021-10-16 12:33:55 字數 1460 閱讀 9112

輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。

先有兩個單調遞增的鍊錶

合併後

從上圖發現,我們一共需要4個指標,第乙個是頭指標,第二個和第三個分別是控制兩個鍊錶的移動的指標,第四個指標是最小值的指標(前面的指標)。

class

solution

:# 返回合併後列表

defmerge

(self, phead1, phead2)

:if phead1 ==

none

:return phead2

if phead2 ==

none

:return phead1

# 得到最小的乙個頭結點

newhead = phead1 if phead1.val < phead2.val else phead2

# 鍊錶1上的指標 和 鍊錶2上的指標

ptmp1 = phead1

ptmp2 = phead2

if newhead == ptmp1:

ptmp1 = ptmp1.

next

if newhead == ptmp2:

ptmp2 = ptmp2.

next

# 前面的指標

previouspointer = newhead

# 鍊錶1 和 鍊錶2 都不為空的時候,開始合併

while ptmp1 and ptmp2:

# 找出最小值,放在previouspointer指標後面

if ptmp1.val < ptmp2.val:

previouspointer.

next

= ptmp1

previouspointer = ptmp1

ptmp1 = ptmp1.

next

else

: previouspointer.

next

= ptmp2

previouspointer = ptmp2

ptmp2 = ptmp2.

next

if ptmp1 ==

none

: previouspointer.

next

= ptmp2

if ptmp2 ==

none

: previouspointer.

next

= ptmp1

return newhead

合併兩個排序鍊錶

struct listnode class solution else while pstart1 null pstart2 null plast next pstart1 plast pend1 pend1 pend1 next pstart1 pend1 else plast next psta...

合併兩個排序鍊錶

描述 將兩個排序鍊錶合併為乙個新的排序鍊錶樣例 給出1 3 8 11 15 null,2 null,返回1 2 3 8 11 15 null。解題思路 將兩個鍊錶當中的對應元素的值進行比較,重新確定新鍊錶當中元素的位置。若第乙個鍊錶當前位置的值小於第二個鍊錶當前值,則不需要改變位置,第乙個鍊錶的指標...

合併兩個排序鍊錶

問題描述 將兩個排序鍊錶合併為乙個新的排序鍊錶 樣例 給出1 3 8 11 15 null,2 null,返回1 2 3 8 11 15 null。解題思路 遍歷第二個鍊錶的每乙個節點,然後與第乙個節點的第乙個節點比較,如果第二個鍊錶節點的值小於第乙個,就插入到第乙個煉表裡,如果大於就到下乙個節點。...