javascript - 如何减少 Javascript 中的两个循环以提高效率

标签 javascript arrays loops while-loop big-o

我有一个特定的数组,我想通过它检查数组中的两个值是否等于传递给函数的值,如果这两个整数相等,则将其传递到一个新数组中。

我通过使用两个向后的 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/

相关文章:

javascript - Firefox Javascript,停止脚本

javascript - 模拟 Div 点击 Enzyme 和 React

PHP多个数组存入MySQL数据库

javascript - 如何在 JavaScript 中从数组列表中获取所需的数组

java - 更新 Java 循环中的总计

javascript - jQuery 使整个 Div 成为带有 _blank 的可点击链接

javascript - 查找对象中的值翻倍需要多少天

php - 从 Array 和 SimpleXmlElement 对象获取值

python - 如何添加到我在 Python 中迭代的循环

java - 性能 (JAVA) ~ 循环中的字符串连接,带有前置和附加