https://leetcode-cn.com/problems/add-two-numbers-ii/
点击查看【bilibili】
题目
给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。
你可以假设除了数字 0 之外,这两个数字都不会以零开头。
进阶:
如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转。
示例
入:(7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 8 -> 0 -> 7
解答
答案
var addTwoNumbers = function(l1, l2) {
const stack1 = [], stack2= [];
while(l1 !==null) {
stack1.push(l1.val)
l1 = l1.next
}
while(l2 !== null) {
stack2.push(l2.val)
l2 = l2.next
}
let carry=0,curr=null
while(stack1.length !==0 || stack2.length !==0) {
let sum = 0;
if(stack1.length!==0) {
sum += stack1.pop()
}
if(stack2.length!==0) {
sum += stack2.pop()
}
sum += carry
const node = new ListNode(sum % 10)
carry = Math.floor(sum / 10)
node.next = curr
curr = node
}
if(carry !== 0) {
const node = new ListNode(carry)
node.next = curr
curr = node
}
return curr
};