javascript - 从链表 JavaScript 添加两个数字
问题描述
给定两个表示两个非负整数的非空链表(以相反的顺序),将两个数字相加并将总和作为链表返回。
Input: l1 = [2,4,3], l2 = [5,6,4]
Output: [7,0,8]
Explanation: 342 + 465 = 807.
我这边一切正常,但是在 leetcode 上有一个运行时错误,我不太明白为什么。这是我的代码:
const l1 = [2,4,3]
const l2 = [5,6,4]
const addTwoNumbers = (l1, l2) => {
l1 = reverseLinkedList(l1)
l2 = reverseLinkedList(l2)
const l1sum = linkedListNum(l1)
const l2sum = linkedListNum(l2)
let sum = l1sum + l2sum
// for 0 sum
if (!sum) return [sum]
const l3 = [];
while (sum > 0) {
l3.push(sum % 10);
sum /= 10;
sum = Math.trunc(sum)
}
return l3
}
const reverseLinkedList = (ll) => {
let rev = []
for (let i = ll.length - 1; i >= 0; i--) {
rev.push(ll[i])
}
return rev
}
const linkedListNum = (ll) => {
let sum
for (let i = 0; i < ll.length; i++) {
if (!i) {
sum = ll[i]
continue
}
sum *= 10
sum += ll[i]
}
return sum
}
const answer = addTwoNumbers(l1,l2)
console.log(answer);
// answer output: [7,0,8]
这是错误:
Line 65 in solution.js
throw new TypeError(__serialize__(ret) + " is not valid value for thereturn type ListNode")
^
TypeError: [null] is not valid value for the expected return type ListNode
Line 65: Char 20 in solution.js (Object.<anonymous>)
Line 16: Char 8 in rumner.is (Object.runner)
Line 49: Char 26 in solution.js (Object.<anonymous>)
Line 1251: Char 30 in loader.js (Module._compile)
Line 1272: Char 10 in loader.js (Object.Module._extensions..is)
Line 1100: Char 32 in loader.is (Module.load)
Line 962: Char 14 in loader.js (Function.Module._load)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
Line 17: Char 47 in run_main_module.js
无关:这是我关于堆栈溢出的第一个问题,让我知道我是怎么做的。
解决方案
使用现代数组方法可以实现更简单的方法。
从每个数组创建一个数字
将它们加在一起
将其强制转换回字符串,将其反转,然后
map
将元素转换回数字。
const a1 = [2,4,3];
const a2 = [5,6,4];
// Take an array, reverse it, join it up into a string
// again and make it a number
const getNumber = arr => Number(arr.reverse().join(''));
// Sum the numbers from each array
const getSum = (arr1, arr2) => getNumber(arr1) + getNumber(arr2);
// Coerce the number to a string, split it into an array
// and reverse it, and map the strings back to numbers
const getResult = sum => sum.toString().split('').reverse().map(Number);
// Get the result
console.log(getResult(getSum(a1, a2)));
推荐阅读
- c - 如何理解存储在 sockaddr_storage 中的 IP 的 IP 版本
- c# - datagridview中的动态计算列
- java - 由于 787 SQLite 异常,插入记录时出错
- flutter - 我如何在颤动中实现这样的滚动动画?
- python - 换行的 vscode 设置中的格式代码
- mysql - GROUP BY后如何过滤数据?
- pine-script - 让周六和周日变得丰富多彩
- python - 如何使用 pysam.view() 将 SAM 转换为 BAM
- python - Django:在管理员中减少库存并更改模型显示格式
- tensorflow - Tensorflow/CUDA 中卷积算法之间的结果不匹配