给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
std::unordered_set<int> result;
std::unordered_set<int> nums(nums1.begin(),nums1.end());
for(int cur:nums2){
if(nums.find(cur)!=nums.end()){
result.insert(cur);
}
}
return vector<int>(result.begin(),result.end());
}
};
因为unordered_set的查找效率很高
设置两个set,第一个set存储结果result,第二个set存储num1,遍历num2并且在第二个set中查找,找到共同元素也就是交集就存到result set中,最后输出。