1.问题描述
返回两个数组的交
注意事项
- Each element in the result must be unique.
- The result can be in any order.
nums1 = [1, 2, 2, 1]
, nums2 = [2, 2]
, 返回 [2]
.
2.解题思路
前面和上一个题一样,最后需要用unique()函数去掉集合中的重复元素,它只去掉相邻元素中的重复元素,因此需要排序。
3.代码实现
class Solution {
public:
/**
* @param nums1 an integer array
* @param nums2 an integer array
* @return an integer array
*/
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
// Write your code here
vector<int>m;
if(nums1.size()!=0)
{
sort(nums1.begin(),nums1.end());
}
if(nums2.size()!=0)
{
sort(nums2.begin(),nums2.end());}
int i=nums1.size(),j=nums2.size();
if(i==0||j==0)
return m;
int k=0,l=0;
while(k<i&&l<j)
{
if(nums1[k]==nums2[l]){
{m.push_back(nums1[k]);
k++;l++;}
}
else{
if(nums1[k]<nums2[l]) k++;
if(nums1[k]>nums2[l]) l++;
}
}
m.erase(unique(m.begin(),m.end()),m.end());
return m;
}
};
4.感想
在除重操作中运用了unique()函数。