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