这是我在亚马逊面试中遇到的一个问题,我的答案是
function intersection ( A , B )
{
var C = [];
for ( var a in A ) if ( B.indexOf(a) != -1 ) C.push(a);
return C;
}
他问复杂度的顺序是什么,我回答道并且引用:O(m * n),其中 m=A 的长度,n=B 的长度。他说有更好的方法来做,我当时很惊讶。他说要把 A 和 B 作为对象使用,而我却像是在说:“但你说这些是数组啊!那是你的问题!!!”请问有人能帮帮我吗?
B
创建一个查找表(字典),那么您可以在O(n)中完成它。 - Leefor ... in
循环遍历数组。 - PointyA
和B
是数组,这段代码并不会像它所表现的那样运行。在for (var a in A) { ... }
中,变量a
将保存索引。 - Andreas