题目: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)。