给定两个数组,编写一个函数来计算它们的交集。
使用比较笨的方法
将二者存入map,记录每一个数出现的次数
而后进行查找比对
并将相应的答案存入vector
class Solution {
public:
int min(int a,int b){
if(a>b){
return b;
}
else{
return a;
}
}
vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {
map<int,int> a;
map<int,int>b;
vector<int>temp;
for(int i=0;i<nums1.size();i++){
if(a.count(nums1[i])==0){
a[nums1[i]]=1;}
else{
a[nums1[i]]++;
};
}
for(int i=0;i<nums2.size();i++){
if(b.count(nums2[i])==0){
b[nums2[i]]=1;}
else{
b[nums2[i]]++;
};
}
map<int,int>::iterator it;
for(it = a.begin(); it != a.end(); it++) {
if(a.find(it->first)==b.end()){
continue;
}
else{
int temo=min(a[it->first],b[it->first]);
for(int i=0;i<temo;i++){
temp.push_back(it->first);
}
}
}
return temp;
}
};
map的原理是key-value,key是唯一的,其count函数对元素进行判断,出现则为1否则是0
find函数,如果key存在,则find返回key对应的迭代器,如果key不存在,则find返回尾后迭代器 .end()
if (test.find(key) == test.end())
cout << "无" << endl;