將兩個公升序鍊錶合併為乙個新的 公升序 鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。
示例:輸入:1->2->4, 1->3->4
輸出:1->1->2->3->4->4
1. 考慮遞迴,如果遍歷的時候,l1節點值小於l2,則返回的應該為此時的l1節點及l1.next和l2拼接後的結果,這就形成了遞迴的條件:
#definition for singly-linked list.
#class listnode:
#def __init__(self, val=0, next=none):
#self.val = val
#self.next = next
class
solution:
def mergetwolists(self, l1: listnode, l2: listnode) ->listnode:
ifnot
l1:
return
l2
ifnot
l2:
return
l1
if l1.val<=l2.val:
#將l1的next指向剩下的合併後的結果
l1.next =self.mergetwolists(l1.next,l2)
return
l1
else
: l2.next =self.mergetwolists(l1,l2.next)
return
l2
2. 遍歷判斷
#definition for singly-linked list.
#class listnode:
#def __init__(self, val=0, next=none):
#self.val = val
#self.next = next
class
solution:
def mergetwolists(self, l1: listnode, l2: listnode) ->listnode:
#最容易想到的,兩個指標,遍歷後判斷大小
ifnot
l1:
return
l2
ifnot
l2:
return
l1
#初始化
head = new =listnode(none)
while l1 and
l2: l1val =l1.val
l2val =l2.val
if l1val<=l2val:
head.next =listnode(l1val)
l1 =l1.next
else
: head.next =listnode(l2val)
l2 =l2.next
head =head.next
#重點在下面,如果跳出while說明l1,l2中存在none了,直接拼接剩下的鍊錶就好了
head.next = l1 if l1 else
l2
return new.next
Leetcode 21 合併鍊錶 python
輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。方法一 非遞迴 coding utf 8 class listnode def init self,x self.val x self.next none class solution 返回合併後列表 def...
Leetcode 21 合併有序鍊錶
題目簡介 將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 include using namespace std definition for singly linked list.stru...
LEETCODE 21合併有序鍊錶
將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通 過拼接給定的兩個鍊錶的所有節點組成的。1.迭代法,比較原兩煉表中元素大小後將元素插入新的鍊錶中 listnode mergetwolists listnode l1,listnode l2 else prev prev next prev ne...