You are given two **non-empty** linked lists representing two non-negative integers. The most significant digit comes **first** and each of their nodes contains a single digit. Add the two numbers and return the sum as a linked list. You may assume the two numbers do not contain any leading zero, except the number 0 itself.
Example 1
Input: l1 = [7,2,4,3], l2 = [5,6,4]
Output: [7,8,0,7]
Explanation: Reading the digits from the front, the lists represent 7243 and 564. 7243 + 564 = 7807, so the result is [7,8,0,7].
Example 2
Input: l1 = [2,4,3], l2 = [5,6,4]
Output: [8,0,7]
Explanation: The lists represent 243 and 564. 243 + 564 = 807, so the result is [8,0,7].
Example 3
Input: l1 = [0], l2 = [0]
Output: [0]
Explanation: Both lists represent 0, and 0 + 0 = 0, so the result is [0].
Addition must start at the least-significant digit, but the most-significant digit comes first here. Push both lists onto stacks so popping yields digits from the low end; add with a carry, and prepend each new digit to the front of the result.
Run checks all cases above. Submit evaluates all test cases.