leetcode两数之和我本地执行正确提交却错误
题目描述
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
示例:
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/probl...
题目来源及自己的思路
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} l1
* @param {ListNode} l2
* @return {ListNode}
*/
function sum(node, str = '') {
str = String(node.val) + str;
if(node.next != null) {
str = sum(node.next, str);
}
return str;
}
var addTwoNumbers = function(l1, l2) {
let num1 = sum(l1);
let num2 = sum(l2);
let str = String(Number(num1)+Number(num2));
let res = [];
for(let i = 0; i < str.length; i++) {
res.unshift(Number(str[i]));
}
return res;
};
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
你期待的结果是什么?实际看到的错误信息又是什么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Hi 不知道题主你还有没有在看这个问题。
首先是对于有报错的 CASE,在错误那里,LEETCODE 会给你展示具体的错误 CASE。你可以看看里面的信息可能有助于寻找错误。
另外看了一下你的代码,应该是不能 AC 的,因为这道题背后要考察的内容就是大数求和。在 JS 中,数字都是以双精度浮点数的形式存储的,并且遵循 IEEE754 标准。所以并不能对所有的数字直接进行精确的运算。具体你可以通过
Number.MAX_VALUE
和Number.MAX_SAFE_INTEGER
查看到一些范围。这道题你可以尝试通过同步遍历两个链表,然后逐位的运算来得到结果。如果具体实现有问题,可以留言。
这个一看基本判断是大数溢出了,这个题目考的是大数的处理,你应该基于原有的数据结构直接求和而不是合并再拆开。