给定两个数组,计算两个数组的交集
样例
样例1
输入:
nums1 = [1, 2, 2, 1], nums2 = [2, 2]
输出:
[2, 2]
样例2
输入:
nums1 = [1, 1, 2], nums2 = [1]
输出:
[1]
挑战
-如果给定的数组已经排序了怎么办?如何优化算法?
-如果nums1的大小比num2的小怎么办?哪种算法更好?
-如果nums2的元素存储在磁盘上,并且内存受到限制,以至于不能一次将所有元素加载到内存中,该怎么办?
注意事项
每个元素出现次数得和在数组里一样
答案可以以任意顺序给出
class Solution {
public:
/**
* @param nums1: an integer array
* @param nums2: an integer array
* @return: an integer array
*/
vector<int> intersection(vector<int> &nums1, vector<int> &nums2) {
// write your code here
vector<int> ret;
unordered_map<int, int> mymap;
for(int i = 0; i < nums1.size(); i++)
{
mymap[nums1[i]]++;
}
for(int i = 0; i < nums2.size(); i++)
{
if(mymap[nums2[i]])
{
mymap[nums2[i]]--;
ret.push_back(nums2[i]);
}
}
return ret;
}
};