LeetCode21.合併兩個有序連結串列 python3
阿新 • • 發佈:2018-12-13
將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。
示例:
輸入:1->2->4, 1->3->4 輸出:1->1->2->3->4->4
思路: 新手上來第一印象想到的肯定是把連結串列連上再排序,totally OK,沒問題,但是時間複雜度無疑會很高。於是第二種想法,我們不如來增加空間複雜度,建立一個新的連結串列,按順序將L1,L2續上。如下:
# Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: def mergeTwoLists(self, l1, l2): head = ListNode(0) New_list = head while l1 != None and l2 != None: if l1.val > l2.val: head.next = l2 l2 = l2.next else: head.next = l1 l1 = l1.next head = head.next if l2 != None: head.next = l2 elif l1 != None: head.next = l1 return New_list.next #New_list一直指著頭部,頭部是我們指定的0,所以要從下一個開始return