【发布时间】:2017-11-14 11:35:03
【问题描述】:
我正试图在我的编码解决方案中节省时间。
我有一个名为tripletSum 的函数,它接受两个参数x 和a,其中x 是一个数字,a 是一个数组。
如果列表a包含三个元素加起来等于数字x,则该函数应该返回true,否则它应该返回false。
我创建了以下工作解决方案:
function tripletSum(x, a) {
for(var i = 0; i < a.length; i++) {
for(var j = i + 1; j < a.length; j++) {
for(var k = j + 1; k < a.length; k++) {
if((a[i] + a[j] + a[k]) === x) {
return true;
}
}
}
}
return false;
}
但这似乎不是最佳做法。如果我没记错的话,目前运行这个函数所需的时间是O(n^3),我认为它可以改进为O(n^2)的时间复杂度。
无论如何我可以更改此代码来做到这一点?
编辑:这不是另一个问题的重复,因为我要求对我当前在 JavaScript 中的示例进行特定改进,这不是它在标记的重复问题中所要求的。
【问题讨论】:
-
codereview.stackexchange.com 可能会为您提供更好的答案
标签: javascript algorithm time-complexity