Appearance
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)
};