Skip to content
On this page

445. 两数相加 II

原题链接:LeetCode 445. 两数相加 II

题目描述

给你两个 **非空 **链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。

你可以假设除了数字 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]

提示:

- 链表的长度范围为` [1, 100]`

- `0 <= node.val <= 9`

- 输入数据保证链表代表的数字无前导 0

**进阶:**如果输入链表不能翻转该如何解决?

难度: Medium


题解代码

javascript
/**
 * 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) {
    const toNumber = link => {
        let arr = []
        let ele = {
            next: link
        }
        while(ele.next) {
            arr.push(ele.next.val)
            ele.next = ele.next.next
        }
        return BigInt(arr.join(''))
    }
    const toLinkList = total => {
        const arr = total.toString().split('')
        let head = new ListNode(arr.shift())
        let next = head
        while (arr.length) {
            next.next = new ListNode(arr.shift())
            next = next.next
        }
        return head
    }
    const total = toNumber(l1) + toNumber(l2)
    return toLinkList(total)
};

技术文档集合