题目链接:
https://leetcode.com/problems/intersection-of-two-arrays/description/
描述
Given two arrays, write a function to compute their intersection.
Example:
Given nums1 = [1, 2, 2, 1], nums2 = [2, 2], return [2].
Note:
Each element in the result must be unique.
The result can be in any order.
输入
输入两个数组。
输出
输出两个数组的交集(集合需要满足互异性),且需要按序输出。
样例输入
[1, 2, 2, 1] [2, 2] |
样例输出
2 |
算法思想:
首先将两数组分别排序,然后去重,最后循环其中一个数组,查看其中的元素是否在另一个数组中,如果在就放入结果数组中。返回结果数组。
源代码
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
vector<int> ans;
sort(nums1.begin(),nums1.end());
sort(nums2.begin(),nums2.end());
vector<int>::iterator it1,it2,it3,it4;
it1 = unique(nums1.begin(),nums1.end());
it2 = unique(nums2.begin(),nums2.end());
for(it3 = nums1.begin();it3 != it1;it3++)
{
if(find(nums2.begin(),it2,*it3) != it2)
{
ans.push_back(*it3);
}
}
return ans;
}
};
最优源代码
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
set<int> s(nums1.begin(), nums1.end());
vector<int> out;
for (int x : nums2)
if (s.erase(x))
out.push_back(x);
return out;
}