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 SolutionsPython 3 • JavaScript • TypeScript • Java • C++
Switch tabs or choose Alldef 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