给定两个数组,编写一个函数来计算它们的交集。
示例 1:
输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2,2]
示例 2:
输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [4,9]
说明:
- 输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。
- 我们可以不考虑输出结果的顺序。
进阶:
- 如果给定的数组已经排好序呢?你将如何优化你的算法?
- 如果 nums1 的大小比 nums2 小很多,哪种方法更优?
- 如果 nums2 的元素存储在磁盘上,磁盘内存是有限的,并且你不能一次加载所有的元素到内存中,你该怎么办?
1 class Solution { 2 public: 3 vector intersect(vector & nums1, vector & nums2) { 4 mapm1; 5 map m2; 6 7 for(int i=0;i ::iterator it1;24 map ::iterator it2;25 vector result;26 27 for(it1=m1.begin();it1!=m1.end();it1++){28 it2=m2.find(it1->first);29 if(it2!=m2.end()){30 int counter = it1->second >= it2->second ? it2->second : it1->second;31 for(int i=0;i first);33 }34 }35 }36 37 return result;38 39 40 }41 };