problems:
Given two arrays, write a function to compute their intersection.
Example 1:
Input: nums1 = [1,2,2,1], nums2 = [2,2]
Output: [2]
Example 2:
Input: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
Output: [9,4]
Note:
Each element in the result must be unique.
The result can be in any order.
tip:
返回两个序列中相同的字符。
solution:
1.使用unordered_map
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
int n = nums1.size();
int m = nums2.size();
vector<int> s1 = nums1;
vector<int> s2 = nums2;
vector<int> s3;
unordered_map<int,int> un;
for(int i=0;i<n;i++)
{
if(!un.count(s1[i]))//重复的只统计一次
un[s1[i]]++;
}
for(int i = 0;i<m;i++)
{
if(un[s2[i]])
{
un[s2[i]]--;
s3.push_back(s2[i]);
}
}
return s3;
}
};
2.使用unordered_set
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
int n = nums1.size();
int m = nums2.size();
unordered_set<int> s(nums1.begin(),nums1.end());
unordered_set<int> res;
for(auto a:nums2)
{
if(s.count(a))
res.insert(a);
}
return vector<int>(res.begin(),res.end());
}
};