1.暴力解法
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
sort(nums1.begin(), nums1.end());//排序
sort(nums2.begin(), nums2.end());
vector<int> v;
for(int i = 0; i < nums1.size(); i++)
{
for(int j = 0; j < nums2.size(); j++)
{
if(nums1[i] == nums2[j] && (v.size() == 0 || nums1[i] != v.back()))//首先满足两数相等,在满足v为空或此次加入的元素不等于上一个元素
{
v.push_back(nums1[i]);//存入v中
}
}
}
return v;
}
};
2.哈希表解法
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
//unorder_set中元素不重复且可以无序排列
unordered_set<int> nums1_set(nums1.begin(), nums1.end());//初始化set为num1中的元素
unordered_set<int> result_set;//存放结果
for(auto num : nums2)
{
if(nums1_set.find(num) != nums1_set.end())//判断数是否在num1中。 find——若数存在于nums1_set,则返回num数所在的迭代器,反之返回end()迭代器
{
result_set.insert(num);
}
}
return vector<int>(result_set.begin(), result_set.end());
}
};