合併兩個有序的連結串列(LeetCode第21題)
阿新 • • 發佈:2018-11-04
方法一:
# Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: def mergeTwoLists(self, l1, l2): #這裡的l1 l2都是連結串列形式,所以沒有索引沒有長度 """ :type l1: ListNode :type l2: ListNode :rtype: ListNode """ p = ListNode(0) #先定義一個節點(頭結點) head = p while l1 != None and l2 != None: if l1.val <= l2.val: p.next = l1 l1 = l1.next else: p.next = l2 l2 = l2.next p = p.next if l1 != None: p.next = l1 elif l2 != None: p.next = l2 return head.next
方法二:
# Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: def mergeTwoLists(self, l1, l2): #這裡的l1 l2都是連結串列形式,所以沒有索引沒有長度 """ :type l1: ListNode :type l2: ListNode :rtype: ListNode """ if l1==None and l2==None: return None if l1==None: return l2 if l2==None: return l1 if l1.val<=l2.val: l1.next=self.mergeTwoLists(l1.next,l2) return l1 else: l2.next=self.mergeTwoLists(l1,l2.next) return l2