我有一个特定的数组,我想通过它检查数组中的两个值是否等于传递给函数的值,如果这两个整数相等,则将其传递到一个新数组中。
我通过使用两个向后的 while 循环并将长度缓存为变量来解决这个问题,这似乎很有效。然而,有人向我提到,可能有一种方法可以消除对其中一个循环的需要,并使其更加高效,从而优化 BIG O 表示法。
有什么想法可以做到这一点吗?这就是我所拥有的...
var intArray = [1, 3, 7, 8, 10, 4, 6, 13, 0],
newArray = [],
i = intArray.length;
function arrayCheck(k) {
while(i--) {
var z = i;
while (z--) {
if (intArray[i] + intArray[z] === k) {
newArray.push(intArray[i]);
newArray.push(intArray[z]);
}
}
}
alert(newArray);
}
arrayCheck(8);
最佳答案
有一种算法可以在线性 [O(n)] 时间内解决这个问题。我建议你看看这个SO answer .
此外,正如其他人所说,将答案标记为已接受将使人们更有可能回答您的问题。您可能希望重新审视之前提出的问题并接受任何值得的答案。
关于javascript - 如何减少 Javascript 中的两个循环以提高效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11892149/