本质上就是找出两个数组相同的元素集合。
注意题目特意说明:「输出结果中的每个元素一定是唯一的,也就是说输出的结果是去重的, 同时可以不考虑输出结果的顺序」
那么就开始考虑不需要对数据进行排序,而且还不会让数据重复的一种数据结构,我们选择unordered_set。读写效率是最高的很完美。
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
vector<int> res;
unordered_set<int> myset(nums1.begin(),nums1.end());
//for(int &num : nums1){
// myset.insert(num);
//}
for(int &num : nums2){
if(myset.find(num)!=myset.end()){
res.push_back(num);
myset.erase(num);
}
}
return res;
}
};
总结
而且如果哈希值比较少、特别分散、跨度非常大,使用数组就造成空间的极大浪费。