题目描述

LeetCode求两个数组的交集_i++

set集合

class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2){
set<int> s(nums1.begin(), nums1.end());
vector<int> res;
for(int num : nums2){
if(s.erase(num)){//删除成功返回1,失败返回0
res.push_back(num);
}
}
return res;
}
};

LeetCode求两个数组的交集_i++_02

排序 + 双指针

class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2){
sort(nums1.begin(), nums1.end());
sort(nums2.begin(), nums2.end());
int i = 0;
int j = 0;
set<int> s;
while(i < nums1.size() && j < nums2.size()){
if(nums1[i] == nums2[j]){
s.insert(nums1[i]);
i++;
j++;
}else if(nums1[i] > nums2[j]){
j++;
}else{
i++;
}
}
vector<int> res(s.begin(), s.end());
return res;
}
};

LeetCode求两个数组的交集_双指针_03