1. 题目描述
给定两个数组 nums1 和 nums2 ,返回 它们的 交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。
示例 1:
输入:nums1 = 1,2,2,1, nums2 = 2,2
输出:2
示例 2:
输入:nums1 = 4,9,5, nums2 = 9,4,9,8,4
输出:9,4
解释:4,9 也是可通过的
2. 解题思路
首先定义一个用来记录元素有无的数组record,还有记录重复元素的集合ans,然后遍历nums1,记录nums1中的元素,然后遍历nums2,如果num2的元素在nums1中出现过,则压入ans,最后返回ans
3. 代码实现
cpp
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
unordered_set<int> ans;
vector<int> record(1001,0);
for (int i = 0; i< nums1.size(); i++)
{
record[nums1[i]]++;
}
for (int i = 0; i< nums2.size(); i++)
{
if(record[nums2[i]] != 0)
{
ans.insert(nums2[i]);
}
}
return vector<int>(ans.begin(),ans.end());
}
};