给定以下数组:
const arr = [11, 44, 88]
如何单独检查数组中的一个数字与另一个数字?例如
check --> 11 against 44 | 11 against 88;
check --> 44 against 11 | 44 against 88;
check --> 88 against 11 | 88 against 44;
我能够用嵌套循环做到这一点,这可以完成这项工作,但我想知道是否有更好的解决方案?
还应该注意的是,有些比较是多余的,例如11对44和44对11。
不可能提高两个循环的计算复杂度,O(n ^ 2)
,但是您可以通过在外部索引之后的索引处开始第二个循环来减少冗余检查:
const arr = [11, 44, 88];
arr.forEach((num1, i) => {
for (let j = i + 1; j < arr.length; j++) {
console.log(num1, 'vs', arr[j]);
}
});