leetcode 21 合併公升序鍊錶

2022-08-23 23:39:14 字數 1729 閱讀 8937

將兩個公升序鍊錶合併為乙個新的 公升序 鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。 

示例:輸入: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...