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. 代码实现
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());}
};