题目描述
给定两个数组 nums1
和 nums2
,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序
题解
使用unordered_map去重,之后其中一个数组装入容器,在容器中寻找另一个数组的元素并insert进新容器,将新容器转化回vector即为题解
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
unordered_set<int> result;
unordered_set<int> comp(nums1.begin(), nums1.end());
for(int i=0;i<nums2.size();i++)
{
if(comp.find(nums2[i])!=comp.end())//unordered_set查找失败时返回end
result.insert(nums2[i]);
}
return vector<int>(result.begin(),result.end());
}
};
注意事项
1.不要想着什么都无脑用set,因为直接使用set不仅占用空间比数组大,而且速度要比数组慢,set把数值映射到key上都要做hash计算的。不要小瞧这个耗时,在数据量大的情况,差距是很明显的