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

2021-10-18 13:24:17 字數 1641 閱讀 3184

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

這題是一道簡單題,如果學習了資料結構當中的鍊錶的話,可以很輕鬆就想出解題過程:

/**

* definition for singly-linked list.

* public class listnode

* }*/class

solution

else

temnode = temnode.next;}if

(temnode1!=null || temnode2!=null)

}return newhead.next;

}}

先新建兩個節點newhead和temnode作為我們要返回鍊錶的頭節點和替身,再新建兩個節點temnode1和temnode2來代替l1和l2。當temnode1和temnode2都不為null時,也就是兩個鍊錶都沒有遍歷完,然後根據temnode1和temnode2的值來決定將誰的值作為新加在temnode後的節點的值。當temnode1或temnode2中有乙個為null,即短的那乙個鍊錶遍歷完了,我們需要遍歷較長的鍊錶的剩餘部分。

寫完後,經過簡單的除錯,提交通過。

看了看**,發現**中還有待改善的地方:

根據上面的想法後用python3寫的**:

# definition for singly-linked list.

# class listnode:

# def __init__(self, x):

# self.val = x

# self.next = none

class

solution

:def

mergetwolists

(self, l1: listnode, l2: listnode)

-> listnode:

newhead = listnode(

) head = newhead

while l1!=

none

and l2!=

none

:if l1.val<=l2.val:

newhead.

next

= l1

l1 = l1.

next

else

: newhead.

next

= l2

l2 = l2.

next

newhead = newhead.

next

if l1!=

none

or l2!=

none

: newnode = l2 if l1 ==

none

else l1

while newnode !=

none

: newhead.

next

= newnode

newhead = newhead.

next

newnode = newnode.

next

return head.

next

劍指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...