题目描述:
给定两个数组,写一个函数来计算它们的交集。
例子:
给定 num1= [1, 2, 2, 1]
, nums2 = [2, 2]
, 返回 [2]
.
提示:
- 每个在结果中的元素必定是唯一的。
- 我们可以不考虑输出结果的顺序。
思路:将两个数组排序,然后按序遍历一次两个数组,比较是否有交集
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
vector<int> re;
if(nums1.empty() || nums2.empty())
return re;
sort(nums1.begin(), nums1.end());
sort(nums2.begin(), nums2.end());
int i=0, j=0;
int same=0, tag=0;
while(i<nums1.size() and j< nums2.size()){
if(nums1[i]==nums2[j]){
if(tag==0 || nums1[i] != same){
re.push_back(nums1[i]);
tag=1;
}
same=nums1[i];
i++;
j++;
}
else if(nums1[i]>nums2[j])
j++;
else
i++;
}
return re;
}
};