我刚开始学习大 O 表示法,试图理解不同函数的时间复杂度,以确定哪个更好。
我在计算以下代码的时间和空间复杂度方面遇到了困难。
function findCommonElem(arr1, arr2) {
let result = arr1.filter(x => arr2.includes(x));
console.log(result);
}
findCommonElem(arr1, arr2);
据我所知,常见的数组方法如
filter()
通常具有O(n)
的时间复杂度,因此在这种情况下,它将取决于每个数组的长度而成为O(m+n)
。不过,我的理解可能是错误的。能否有人解释一下?非常感谢!
额外问题:与对同一函数使用while循环排序数组相比,哪一个被认为是“更好的”呢?
m + n
?findCommonElem
函数在最坏情况下会将arr1
的每个元素与arr2
的每个元素进行比较 ->m * n
。 - Andreas