【发布时间】:2012-08-09 21:23:59
【问题描述】:
我有一个特定的数组,我想通过它检查数组中的两个值是否等于传递给函数的值,如果两个整数相等,则将其传递给一个新数组。
我已经通过使用两个向后的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);
【问题讨论】:
-
总是会有
n * (n-1)对,但只有在原始数组发生变化时才能预先计算总和。 -
在函数之外初始化迭代变量也是非常值得怀疑的。
标签: javascript arrays loops while-loop big-o