https://leetcode.com/problems/add-two-numbers/?envType=study-plan-v2&envId=top-interview-150
def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
return_dummy = dummy = ListNode()
carry = 0
while l1 or l2:
total = carry
if l1: total += l1.val
if l2: total += l2.val
remainder = total % 10
dummy.next = ListNode(val=remainder)
dummy = dummy.next
carry = total//10
if l1: l1 = l1.next
if l2: l2 = l2.next
if carry: dummy.next = ListNode(val=carry)
return return_dummy.next
$Time = O((max(N,M))$
$Space = O(1)$