两数相加
题目描述:
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
求解代码:
/** * Definition for singly-linked list. * function ListNode(val) { * this.val = val; * this.next = null; * } */ /** * @param {ListNode} l1 * @param {ListNode} l2 * @return {ListNode} */ var addTwoNumbers = function(l1, l2) { let sum = 0 let head = {} let cur = head // 将新建的虚拟节点赋值给当前节点 // 当 l1 l2 2条链表不为 null 或 sum不为0时,循环操作 while (l1 || l2 || sum) { sum += (l1 && l1.val) + (l2 && l2.val) //2个数值相加并加上进位,得到最终之和 cur = cur.next = new ListNode(sum % 10) // 给当前节点的下一个节点的值分配为 计算和(sum)的余数,然后赋值给 cur以此更新当前节点对象 cur // 更新 l1 l2 2 条链表 l1 = l1 && l1.next l2 = l2 && l2.next //求下一次相加时的进位,如果当前之和大于10,进位为 1 sum = Math.floor(sum / 10) } return head.next };