【发布时间】:2020-12-01 14:02:06
【问题描述】:
我正在编写一个函数,如果数组中任意两个整数的和作为数组中的一项存在,则该函数返回 true。例如:
[3, 4, 8, 11]
//returns true because 8 + 3 = 11
[2, 4, 7, 12]
//returns false
到目前为止,我得到了这个:
const checkArray = (arr) => {
arr.sort((a, b) => a - b);
let lhs = 0;
let rhs = array.length - 1;
while (lhs < rhs) {
const sum = arr[lhs] + arr[rhs];
if (arr.includes(sum)) {
return true;
} else if (arr[lhs] < sum) {
lhs++;
} else {
rhs--;
}
}
return true;
}
搞了一段时间,不知道我做错了什么。
【问题讨论】:
-
您是否尝试过调试一个小的失败示例?你的发现在哪里?
-
return false;应该是默认值 -
应该是
arr.length -1而不是array.length - 1。 -
我不明白算法背后的想法,而且它不起作用。你能详细说明一下吗?
-
经过一番研究,您的代码看起来像是陈旧的 quadratic 3SUM implementation 的剥离/破坏版本。我不确定这实际上是您的代码,还是链接代码的任意破坏版本,没有任何关于源的解释,或者编辑背后的想法(不起作用)。自发布此消息以来,您似乎也死了。
标签: javascript arrays algorithm