難度:簡單
題目要求:將兩個公升序鍊錶合併為乙個新的公升序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。
示例 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...