InterviewHubPRO
Section Overview
Q43

Question 43 of 100

Part 5: Linked Lists & Fast-Slow Pointers (37 - 45)

43%
DSA Patterns (Multi-Lang)•Part 5: Linked Lists & Fast-Slow Pointers (37 - 45)

Add Two Numbers.

In Simple Words: Traverse both lists node by node, summing corresponding digits plus carry. Insert sum % 10 into new node and set carry = Math.floor(sum / 10).

  • Time: $O(\max(N, M))$ | Space: $O(1)$ auxiliary
Multi-Language Solutions
Switch tabs or choose All
def addTwoNumbers(l1: ListNode | None, l2: ListNode | None) -> ListNode | None:
    dummy = ListNode(0)
    curr = dummy
    carry = 0
    while l1 or l2 or carry:
        v1 = l1.val if l1 else 0
        v2 = l2.val if l2 else 0
        total = v1 + v2 + carry
        carry = total // 10
        curr.next = ListNode(total % 10)
        curr = curr.next
        l1 = l1.next if l1 else None
        l2 = l2.next if l2 else None
    return dummy.next