您的位置:首页 > 其它

【查找】找出两个数组共同拥有的元素

2015-01-14 16:58 267 查看
题目:EPI



当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)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐