题目:现有数组A,B(两数组分别不含重复的元素),先要求输出A,B数组中相同的元素。要求时间复杂度小于O(n^2)。
解析:我们最先想到的算法是双重循环,逐个对比(部分代码见下)。
for(i =0;i<n;++i)
for(j=0;j<m;++j)
if(a[i]==b[j])
cout<<a[i]<<" ";
但是这样的时间复杂度就等于O(n^2),这是不满足题目要求的。
【方法01】
现在需要对上述算法进行优化,可以考虑先分别对两个数组进行快速排序,时间复杂度为O(n*logn);然后对排序后的数组进行从头到尾的一次遍历就能完成