您的位置:首页 > 职场人生

两个无序数组求公共交集

2017-08-17 21:20 645 查看
百度软件开发面试题:现有数据A[]和数组B[],数组A和B的元素个数可能相差很多,但也可能几乎相同。要求有什么方法能尽快找出数组A和B的交集元素。说明时间和空间复杂性是多少?

方案一:使用两个for循环遍历两个数组,时间复杂度为O(n2),空间复杂度O(1)

方案二:将两个数组排好序,之后设置两个数组的下标i=0,j = 0,从头到尾扫描两个数组中数是否相同,如果不同,较小的数靠后移位,如果相同,则两个下标同时后移,直到其中一个下标到了末尾,则结束。时间复杂度为O(nlogn),空间复杂度O(1)

方案三:对长度较短的数组建立hash表,然后利用较长的数组在hash表中查找是否存在。时间复杂度为O(1),空间复杂度O(min(N,M))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  面试题 百度