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.
class Solution {
public:
/*algorithm
1)add nums1 to hash set S
2)for each number in nums2, check whether it exist in S,if it is add it to result
time O(m+n)
*/
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
unordered_set<int>hash1,hash2;
vector<int>result;
for(int i = 0;i < nums1.size();i++){
hash1.insert(nums1[i]);
}
for(int j = 0;j < nums2.size();j++){
if(hash1.count(nums2[j])){
hash2.insert(nums2[j]);
}
}
for(auto it = hash2.begin();it != hash2.end();it++){
result.push_back(*it);
}
return result;
}
};