题目:
返回两个数组的交
样例:
nums1 = [1, 2, 2, 1]
, nums2 = [2, 2]
, 返回 [2]
.
思路:
先找出两数组的交,然后再去重,unique返回的是去重后的尾地址。
具体代码:
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>v;
sort(nums1.begin(),nums1.end());
sort(nums2.begin(),nums2.end());
int a=0;
int b=0;
while(a<nums1.size()&&b<nums2.size()){
if(nums1[a]==nums2[b]){
v.push_back(nums1[a]);
a++;
b++;
}
if(nums1[a]<nums2[b])a++;
if(nums1[a]>nums2[b])b++;
}
v.erase(unique(v.begin(),v.end()),v.end());
return v;
}
};
感想:
此题与两数组的交Ⅱ差不多,但要去重。本来不知道unique,想用两个for循环实现,但了解unique后发现比循环方便许多。