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