题目描述
给定两个数组 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] 也是可通过的
解题思路
使用一种哈希数据结构:unordered_set
注意:输出结果中的每个元素一定是唯一的,也就是说输出的结果的去重的, 同时可以不考虑输出结果的顺序
代码
(C++)
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
unordered_set<int> results; // 存储结果(没有重复元素)
// 将 nums1 去重
unordered_set<int> nums1_set(nums1.begin(), nums1.end());
// 依次判断 nums2 中的元素是否在 nums1_set 中出现
for (int num : nums2) {
if (nums1_set.find(num) != nums1_set.end()) {
results.emplace(num);
}
}
return vector<int> (results.begin(), results.end());
}
}
(Python)
class Solution:
def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
return list(set(nums1) & set(nums2))