给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。
你可以假设除了数字 0 之外,这两个数字都不会以零开头。
示例1:

输入:l1 = [7,2,4,3], l2 = [5,6,4]
输出:[7,8,0,7]
示例2:
输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[8,0,7]
示例3:
输入:l1 = [0], l2 = [0]
输出:[0]
和逆序的链表相比,先把链表反转再进行相加
var addTwoNumbers = function(l1, l2) {
let prev1 = null;
let prev2 = null;
while (l1) {
let next = l1.next;
l1.next = prev1;
prev1 = l1;
l1 = next;
}
while (l2) {
let next = l2.next;
l2.next = prev2;
prev2 = l2;
l2 = next;
}
let dummy = new ListNode();
let cur = dummy;
let add = 0;
while (prev1 || prev2 || add) {
let val1 = prev1 ? prev1.val : 0;
let val2 = prev2 ? prev2.val : 0;
let sum = add + val1 + val2;
let value = sum % 10;
add = Math.floor(sum / 10);
let node = new ListNode(value);
node.next = cur.next;
cur.next = node;
prev1 = prev1 && prev1.next;
prev2 = prev2 && prev2.next;
}
return dummy.next;
};