21.?合并兩個有序鏈表
將兩個有序鏈表合并為一個新的有序鏈表并返回六敬。新鏈表是通過拼接給定的兩個鏈表的所有節(jié)點(diǎn)組成的悠鞍。?
示例:
輸入:1->2->4, 1->3->4輸出:1->1->2->3->4->4
# Definition for singly-linked list.
# class ListNode:
#? ? def __init__(self, x):
#? ? ? ? self.val = x
#? ? ? ? self.next = None
class Solution:
? ? def mergeTwoLists(self, l1, l2):
? ? ? ? """
? ? ? ? :type l1: ListNode
? ? ? ? :type l2: ListNode
? ? ? ? :rtype: ListNode
? ? ? ? """
? ? ? ? isFirst = True
? ? ? ? if l1==None:
? ? ? ? ? ? return l2
? ? ? ? if l2 == None:
? ? ? ? ? ? return l1
? ? ? ? while l2!=None:
? ? ? ? ? ? if isFirst:
? ? ? ? ? ? ? ? if l1.val >= l2.val:
? ? ? ? ? ? ? ? ? ? c = ListNode(l2.val)
? ? ? ? ? ? ? ? ? ? c.next = l1
? ? ? ? ? ? ? ? ? ? l1 = c
? ? ? ? ? ? ? ? ? ? l2 = l2.next
? ? ? ? ? ? ? ? n = l1
? ? ? ? ? ? ? ? isFirst = False
? ? ? ? ? ? elif l1.next==None:
? ? ? ? ? ? ? ? l1.next = l2
? ? ? ? ? ? ? ? return n
? ? ? ? ? ? else:
? ? ? ? ? ? ? ? if l1.next.val < l2.val:
? ? ? ? ? ? ? ? ? ? l1 = l1.next
? ? ? ? ? ? ? ? else:
? ? ? ? ? ? ? ? ? ? c = ListNode(l2.val)
? ? ? ? ? ? ? ? ? ? c.next = l1.next
? ? ? ? ? ? ? ? ? ? l1.next = c
? ? ? ? ? ? ? ? ? ? l2 = l2.next
? ? ? ? return n