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;//返回数组;
    }
};