力扣21 合併兩個有序鍊錶

2021-10-25 19:58:50 字數 1394 閱讀 6040

難度:簡單

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

示例 1:

輸入:l1 = [1,2,4], l2 = [1,3,4]

輸出:[1,1,2,3,4,4]

示例 2:

輸入:l1 = , l2 =

輸出:示例 3:

輸入:l1 = , l2 = [0]

輸出:[0]

題目思想其實很簡單,因為兩個鍊錶都是非遞減的,所以只需要建立乙個頭結點,遍歷兩個鍊錶,比較第乙個元素的大小,將較小的元素新增進新鍊錶。最後將還有剩餘的鍊錶直接新增進末尾。

雖然題目很簡單,但我走了挺多彎路,很久沒做題了有點生疏,感覺智商被按在地上摩擦,最後就是一直在超時,所以以為自己方法錯了。看了題解之後,迅速完成了乙個效果好的**。

# definition for singly-linked list.

# class listnode(object):

# def __init__(self, val=0, next=none):

# self.val = val

# self.next = next

class solution(object):

def mergetwolists(self,l1, l2):

if l1 == none : #l1為空,則不論l2是否為空,都返回l2

return l2

if l2 == none: ##l2為空,則不論l1是否為空,都返回l1

return l1

#l1不為空,l2也不為空

head = listnode(-1) #建立頭結點

result = head

while l1 != none and l2 != none:

if l1.val <= l2.val: #l1的下乙個結點較小

head.next = l1

l1 = l1.next

head = head.next

elif l1.val > l2.val: #l1的下乙個結點較大

head.next = l2

l2 = l2.next

head = head.next

if l1 == none: #在遍歷時,l1全部遍歷完畢,則將l2剩餘部分全部連線進去

力扣 21 合併兩個有序鍊錶

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 definition for singly linked list.struct listnode struct listnode merge...

力扣21 合併兩個有序鍊錶

將兩個公升序鍊錶合併為乙個新的 公升序 鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 簡單的歸併 1 class solution else 15 p p.next 16 17 鏈結多餘的部分 18 p.next l1 ...

力扣題解 21 合併兩個有序鍊錶

將兩個公升序鍊錶合併為乙個新的 公升序 鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 遞迴 definition for singly linked list.struct listnode listnode int x...