题目:
- 给定两个数组
nums1
和nums2
,返回它们的 交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。
示例:
- 输入: n u m s 1 = [ 1 , 2 , 2 , 1 ] , n u m s 2 = [ 2 , 2 ] nums1 = [1,2,2,1], nums2 = [2,2] nums1=[1,2,2,1],nums2=[2,2]
- 输出: [ 2 ] [2] [2]
解题思路:
利用哈希表,先将nums1
中的数据加入一个哈希表nums_set
中,然后遍历nums2
,检查nums_set
中能否找到该数,如果找到,则为两数组交集部分,将该数加入到结果集res
中。
C++版
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
unordered_set<int> res;
unordered_set<int> nums_set(nums1.begin(), nums1.end());
for(int num : nums2){
if(nums_set.find(num) != nums_set.end()){
res.insert(num);
}
}
return vector<int>(res.begin(), res.end());
}
};
时间复杂度:
O
(
n
+
m
)
O(n+m)
O(n+m)
空间复杂度:
O
(
n
)
O(n)
O(n)