//这一题使用了哈希表的思路来找到重复元素。
#include <unordered_set>
#include <vector>
class Solution {
private:
unordered_set<int>s1;
unordered_set<int>s2;
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
s1.clear();
s2.clear();
vector<int>result;
for (const int num : nums1) { //先遍历nums1,记录它有的元素是哪些
if (s1.count(num) ==
0) { //如果nums1中有元素尚未被添加,那就添加。
s1.emplace(num);
}
}
for (const int num :
nums2) { //遍历nums2,看看它里面的哪些元素nums1里已经有了
if (s2.count(num) == 1)//如果是nums2中的重复元素,直接跳过,因为之前肯定已经处理过了。
{
continue;
}
else//如果nums2里是第一次见到这个元素
{
if (s1.count(num) == 1) //如果这个元素nums1里恰好存在,那就往result里加入。
{
result.emplace_back(num);
}
s2.emplace(num);//不管nums1里存在与否,s2都得记录 。
}
}
return result;
}
};