Esempio n. 1
0
    def mergeTwoLists(self, l1, l2):
        p2 = l2
        head = None
        curr = None

        while p1 and p2:
            node = ListNode(0)

            if p1.val <= p2.val:
                node.val = p1.val
                p1 = p1.next
            else:
                node.val = p2.val
                p2 = p2.next

            if curr:
                curr.next = node
            else:
                head = node

            curr = node

        for pointer in [p1, p2]:
            while pointer:
                node = ListNode(pointer.val)
                if curr:
                    curr.next = node
                else:
                    head = node
                curr = node
                pointer = pointer.next

        return head
def add_two_numbers(l1, l2, c=0):
    node = ListNode(0)
    if l1 and l2:
        v = l1.val + l2.val + c
        n1, n2 = l1.next, l2.next
    elif l1:
        v = l1.val + c
        n1, n2 = l1.next, None
    elif l2:
        v = l2.val + c
        n1, n2 = None, l2.next
    elif c:
        v = c
        n1, n2 = None, None
    else:
        return None

    c = v // 10
    v = v % 10

    node.val = v
    node.next = add_two_numbers(n1, n2, c)
    return node