unique 包含在头文件<algorithm>中的函数,使用时数组必须有序排列。
返回值:返回值为去重后的不重复数列中最后一个元素的下一个元素的地址;
注意:unique函数并不是真正去重,而是将重复元素置于数组之后;
class Solution {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
// write code here
sort(nums1.begin(),nums1.end());//首先将两个数组进行排序;
sort(nums2.begin(),nums2.end());
vector<int>vec;//创建交集数组;
int l1=unique(nums1.begin(),nums1.end())-nums1.begin();//利用unique函数获取不同元素的个数
int l2=unique(nums2.begin(),nums2.end())-nums2.begin();
int i=0,j=0;//定义双指针;
while(i<l1&&j<l2){
if(nums1[i]==nums2[j]){//若两个指针所指的元素相同,则放入交集数组,同时两个指针均向后移;
vec.push_back(nums1[i]);
i++;
j++;
}
else{//若不同
if(nums1[i]<nums2[j]){//若nums1中得知小于nums2中的值,nums1的指针后移;
i++;
}
else{//反之nums2的指针后移;
j++;
}
}
}
return vec;//返回数组;
}
};



京公网安备 11010502036488号