【LeetCode 12】349.两个数组的交集
一、题意
二、思考过程
该题输出结果中的每一个元素一定是唯一的,也就是说输出的结果是 去重的,同时不考虑 结果的顺序性。那么这道题我们就用 哈希法来解决。
结构体set,C++
提供了三种可用的数据结构:
std::set
std::multiset
std::unordered_set
如果你有排序需求就选择 set
如果你没有排序需求,只是为了快速的查找和删除,添加,则使用 unordered_set
.
三、完整代码
s2中也插入元素,方便后续s2.count(nums2[i]==0)进行再一次判断。
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
vector<int> ans;//返回值类型
unordered_set<int> s1,s2;//建立s1和s2两个容器
for(int i=0;i<nums1.size();i++){
s1.insert(nums1[i]);//将nums1数组中的每个元素插入到s1中
}
for(int i=0;i<nums2.size();i++){//遍历nums2数组,条件是s1中出现过,但是s2中没有出现过
if(s1.count(nums2[i])==1&&s2.count(nums2[i])==0){//s2中不重复。
ans.push_back(nums2[i]);//push到ans数组中;vector容器末尾加入数据用push_back
s2.insert(nums2[i]);//去重操作,插入到s2中后方便上面if判断是否还有重复
}
}
return ans;
}
};