题目描述:
Given two arrays, write a function to compute their intersection.
Example:
Given nums1 = [1, 2, 2, 1]
, nums2 = [2, 2]
, return [2]
.
Note:
- Each element in the result must be unique.
- The result can be in any order.
求两个数组的相同元素,利用哈希表对数组a进行标记,然后遍历数组b,如果发现数组a中的元素,就加入结果中,但是需要注意遍历过程中可能有重复元素,所以一旦把元素加入结果之后,就要把哈希表中的标记删除,避免重复。
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
unordered_map<int,int> hash;
for(int i=0;i<nums1.size();i++) hash[nums1[i]]=1;
vector<int> result;
for(int i=0;i<nums2.size();i++)
if(hash.count(nums2[i])>0&&hash[nums2[i]]>0)
{
hash[nums2[i]]=0;
result.push_back(nums2[i]);
}
return result;
}
};