将链表的节点值都放入数组中,然后使用归并方法,合二为一,最后将数组转换为链表结构就行
if (car == 1) brr.unshift(1); 当进位的时候,可能会用到这个,例如[9,9] 和 [1] 得 [1,0,0]
var addTwoNumbers = function (l1, l2) {
var arr1 = [];
var arr2 = [];
var p1 = l1;
var p2 = l2;
while (p1 || p2) {
if (p1) {
arr1.unshift(p1.val);
p1 = p1.next;
}
if (p2) {
arr2.unshift(p2.val);
p2 = p2.next;
}
}
var brr = [];
var car = 0;
while (arr1.length || arr2.length) {
if (arr1.length && arr2.length) {
var sum = arr1.shift() + arr2.shift() + car;
} else if (arr1.length) {
var sum = arr1.shift() + car;
} else {
var sum = arr2.shift() + car;
}
brr.push(sum % 10);
car = sum >= 10 ? 1 : 0;
}
brr.reverse();
if (car == 1) brr.unshift(1);
var node = new ListNode();
var point = node;
for (var val of brr) {
point.next = new ListNode(val);
point = point.next;
}
return node.next;
};