Time:
O
(
n
)
O(n)
O(n)
Space:
O
(
n
)
O(n)
O(n)
class Solution {
public:
vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {
unordered_map<int,int> c1,c2;
for (auto n : nums1) {
if (c1.find(n)==c1.end()) c1[n]=1;
else c1[n]=c1[n]+1;
}
for (auto n : nums2) {
if (c2.find(n)==c2.end()) c2[n]=1;
else c2[n]=c2[n]+1;
}
vector<int> res;
for (auto v : c1)
if (c2.find(v.first) != c2.end())
for (int i=0; i<min(v.second,c2[v.first]); ++i)
res.push_back(v.first);
return res;
}
};