【发布时间】:2019-01-25 04:57:20
【问题描述】:
我有以下代码,花了 6 个小时试图解决,但没有运气。它被 1 -> 8, 0 -> null 作为输入的 LinkedList 卡住了。我的输出只是 1 -> null 我不知道为什么。我试图手动完成我的代码,它应该创建新的“next = {val: 8, next: null}”,但它没有发生......
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} l1
* @param {ListNode} l2
* @return {ListNode}
*/
const traversal = function(l1, l2, s, n) {
if (l1 !== null && l2 !== null) {
n.val = l1.val + l2.val + s;
} else if (l1 !== null && l2 === null && !s) {
n.val = l1.val + s;
} else if (l1 === null && l2 !== null && !s) {
n.val = l2.val + s;
} else if (l1 === null && l2 === null && s) {
n.val = s
}
s = 0;
if (n.val > 9) {
s = Number(n.val.toString()[0])
n.val = Number(n.val.toString()[1])
}
if (l1 === null && l2 === null && !s) {
return;
}
if (l1 !== null && l2 !== null && l1.next && l2.next) {
n.next = new ListNode
traversal(l1.next, l2.next, s, n.next)
} else if (l1 !== null && l2 === null && l1.next !== null && l2.next === null) {
n.next = new ListNode
traversal(l1.next, null, s, n.next)
} else if (l1 === null && l2 !== null && l1.next === null && l2.next !== null) {
n.next = new ListNode
traversal(null, l2.next, s, n.next)
} else if (l1.next === null && l2.next === null && s) {
n.next = new ListNode
traversal(null, null, s, n.next)
}
}
var addTwoNumbers = function(l1, l2) {
let storage = 0;
const result = new ListNode
traversal(l1, l2, storage, result)
//console.log(result.next)
return result
};
【问题讨论】:
-
对于初学者,您需要正确声明您的新节点:
new ListNode(0)。使用括号调用构造函数并传递任何必要的参数很重要。我正在尝试让它立即工作,但也许您可以更清楚地了解 addTwoNumbers 函数期望作为参数的内容? -
是的,也许您可以提供我们正在处理的确切数据作为我们函数的参数。否则,很难理解你为什么要写你迄今为止所拥有的。
-
嗨,本,非常感谢您的帮助。这是 leetcode 的完整提示:leetcode.com/problems/add-two-numbers
-
谢谢,这是非常重要的信息,现在我看到了。
-
没问题!我刚刚看到您的编辑建议,而我遇到问题的测试输入确实是 [1, 8] 和 [0]。对不起,如果我写的方式可能让你感到困惑。