【查找】找出两个数组共同拥有的元素
2015-01-14 16:58
267 查看
题目:EPI
![](http://img.blog.csdn.net/20150114204642563?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYnVwdDg4NDY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
当n≈m时,时间复杂度O(n+m)
当n≈m时,时间复杂度O(n+m)
//n≈m vector<int> intersect_array1(const vector<int> &A,const vector<int> &B) { vector<int> res; unsigned int i=0,j=0; while(i<A.size() && j<B.size()) { if(A[i]==B[j])//此处代码与书中不同,经研究,这样写效率更高 { if(i==0 || A[i]!=A[i-1]) res.push_back(A[i]); i++; j++; } else if(A[i]<B[j]) i++; else j++; } return res; }yua当m>>n 时,由于n*logm<<m*logn ,所以对A中的每一个元素,用二分查找在B中判断是否存在相同的元素。时间复杂度O(nlogm)。
相关文章推荐
- 程序员面试题目总结--数组(二)【二分查找、找出给定数字出现次数、两个有序整型数组交集、找出数组中唯一的重复元素、判断数组中的数值是否连续相邻】
- [JAVA]给定两个整形数组,并找出其中共同的元素
- 找出和值等于指定值的元素,如有序数组{1,2,6,23,43,64},求和等于25的两个和数则将是元素2和23,时间复杂度是0(n)。
- 查找两个已经排好序的数组的第k大的元素
- @陈利人 : #面试题#给定两个数组X和Y,元素都是正数。请找出满足如下条件的数对的数目: x^y > y^x,即x的y次方>y的x次方;x来自X数组,y来自Y数组
- 找出两个数组中相同的元素,不排序直接两次循环取出
- 两个有序数组长度分别为m,n,最多m+n次查找找出相同的数
- 查找两个已经排好序的数组的第k大的元素
- 在给定的数组中找出两个元素和为给定值的所有元素对
- 找出一个整形数组的所有元素除了一个、两个、三个元素外,其余全是成对出现的,找出这些元素
- 查找两个已经排好序的数组的第k大的元素
- 找出两个数组中不同的元素
- 找出两个数组中相同的元素
- 数组A中任意两个相邻元素大小相差1,现给定这样的数组A和目标整数t,找出t在数组A中的位置。
- 如何查找到两个数组中不相同的元素.
- 用HashSet查找两个int数组中的相同元素
- 找出两个数组中相同的元素
- 在两个排序数组中查找第k小元素
- 在给定的数组中找出两个元素和为给定值的所有元素对
- 一个数组中,除两个元素其余都出现了两次,找出这两个元素