这个题思路,就是入栈,然后一次出栈,对出栈的数字进行相加,但是有个难点就是要计算进位,num/10 就是计算他的进位,num % 10 就是计算进位以后的个位数
var addTwoNumbers = function (l1, l2) {
const stack1 = [], stack2 = [];
while (l1) {
stack1.push(l1.val);
l1 = l1.next;
}
while (l2) {
stack2.push(l2.val);
l2 = l2.next;
}
console.log(stack1, stack2)
let resN = null;
let carry = 0; // 记录进位
let pre = new ListNode(-1) // 弄一个头节点 方法二用
while (stack1.length || stack2.length || carry !== 0) {
const num1 = stack1.length ? stack1.pop() : 0;
const num2 = stack2.length ? stack2.pop() : 0;
let val = num1 + num2 + carry;
// 下面carry 和val 赋值不能颠倒
carry = val / 10 | 0// 计算进位
val = val % 10; // 计算当前节点的值
/* // 方法一
const newNode = new ListNode(val);
// newNode的值
// 第一步为 个位数 -> null
// 第二步为 十位数->(个位数 -> null)
newNode.next = resN;
resN = newNode; */
console.log(val, pre)
// 方法二
const newNode = new ListNode(val, pre.next);
console.log(newNode)
pre.next = newNode;
}
// return resN; // 方法一
return pre.next; // 方法二
};