AlgoLounge

Add Two Numbers

medium

Leetcode 2. Add Two Numbers

You are given two non-empty linked lists, l1 and l2, where each represents a non-negative integer.

The digits are stored in reverse order, e.g. the number 123 is represented as 3 -> 2 -> 1 -> in the linked list.

Each of the nodes contains a single digit. You may assume the two numbers do not contain any leading zero, except the number 0 itself.

Return the sum of the two numbers as a linked list.

Examples

Example 1

Input:  l1 = [2,4,3], l2 = [5,6,4]
Output: [7,0,8]

342 + 465 = 807

Example 2

Input:  l1 = [0], l2 = [0]
Output: [0]

Example 3

Input:  l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
Output: [8,9,9,9,0,0,0,1]

Constraints

  • The number of nodes in each linked list is in the range [1, 100]
  • 0 <= Node.val <= 9
  • It is guaranteed that the list represents a number that does not have leading zeros

How the tests work: lists are written as arrays — [1,2,3] is the chain 1 → 2 → 3. Your function receives real ListNode objects, and the list you return is read back into an array.

TypeScript
Loading editor…
List of test cases (10)
Case 1
l1 = [2,4,3]
l2 = [5,6,4]
Case 2
l1 = [0]
l2 = [0]
Case 3
l1 = [9,9,9,9,9,9,9]
l2 = [9,9,9,9]
Case 4
l1 = [9]
l2 = [9]
Case 5
l1 = [1,8]
l2 = [0]
Case 6
l1 = [2,4,9]
l2 = [5,6,4,9]
Case 7
l1 = [1]
l2 = [9,9,9]
Case 8
l1 = [5]
l2 = [5]
Case 9
l1 = [9,9]
l2 = [1]
Case 10
l1 = [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]
l2 = [5,6,4]