我有一個特定的數組,我想檢查數組中的兩個值是否等於傳入函數的值,如果這兩個整數有效,則將它傳遞給新陣列。如何在Javascript中減少效率的兩個循環
我已經通過使用兩個向後的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)'對,但只有在原始數組發生變化時才能預先計算總和。 – Pointy 2012-08-09 21:26:22
也在函數之外初始化迭代變量是非常值得懷疑的。 – Pointy 2012-08-09 21:27:40