Add Two Numbers Visualizer & Step-by-Step Algorithm Solution

Add two numbers represented by linked lists in reverse digit order, simulating column-by-column addition with carry.

Category: linked-list | Difficulty: Medium

Tags: Linked List, Math, Two Pointers, Simulation

Add Two Numbers

l1
2
4
3
l2
5
6
4
100%
state
p1undefined
p2undefined
carryundefined
Initialization
1/29
Explanation

Initialize addTwoNumbers. Digits are stored in reverse order, allowing direct column addition from ones position upwards.

Source Code
1function addTwoNumbers(l1: ListNode | null, l2: ListNode | null): ListNode | null {
2 let p1 = l1;
3 let p2 = l2;
4 let dummy = new ListNode(-1);
5 let current = dummy;
6 let carry = 0;
7
8 while (p1 || p2 || carry) {
9 let sum = (p1?.val ?? 0) + (p2?.val ?? 0) + carry;
10 carry = Math.floor(sum / 10);
11 current.next = new ListNode(sum % 10);
12 p1 = p1?.next ?? null;
13 p2 = p2?.next ?? null;
14 current = current.next;
15 }
16
17 return dummy.next;
18}