原题
思路:
如果这个题给出的不是变长数组,可以使用哈希数组进行判定,但是给出的变长数组,在使用其最大长度定义数组的时候会报错,因为可能是0;
因此,这个题使用UNordered_set数组进行操作,set数组能够自动去重。这样,我们首先建立两个set数组h, h1,在遍历第一个数组num1的时候,将数组中的元素压入到set数组h中去,之后遍历第二个num2数组,如果num2中的元素出现在h1中,则判断这个元素是否已经被压入到h2中,如果在h2中没有出现,则将这个元素压入到最终的结果中。
如果没有判断是否在h2中出现,结果不会被去重。
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
unordered_set<int> h, h1;
vector<int> b;
for(int i=0; i<nums1.size(); i++)
{
h.insert(nums1[i]);
}
for(int i=0; i<nums2.size(); i++)
{
if(h.count(nums2[i]) && h1.count(nums2[i]) == 0)
{
h1.insert(nums2[i]);
b.push_back(nums2[i]);
}
}
return b;
}
};