只要看到有检查是否出现过,第一反应--------------------哈希(数组,set,map)
自己写的数组法(看起来复杂,但是完全没用set和map)
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
vector<int> ret(1001,0);
vector<int> ret2;
for(int i=0;i<nums1.size();++i){
if(ret[nums1[i]]<1) ++ret[nums1[i]];
else continue;
}
for(int i=0;i<nums2.size();++i){
if(ret[nums2[i]]<2&&ret[nums2[i]]>=1) ++ret[nums2[i]];
else continue;
}
for(int i=0;i<1001;++i){
if(ret[i]>=2) ret2.push_back(i);
}
return ret2;
}
};
set方法
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
vector<int> res;
unordered_set<int> set;
unordered_set<int> set1;
for(int i=0;i<nums1.size();++i){
set.insert(nums1[i]);
}
for(int i=0;i<nums2.size();++i){
if(set.find(nums2[i])!=set.end()) set1.insert(nums2[i]);
}
for(auto &i:set1){
res.push_back(i);
}
return res;
}
};