548. 两数组的交 II

计算两个数组的交
注意事项:

每个元素出现次数得和在数组里一样
答案可以以任意顺序给出

样例
nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2, 2].

排序+双指针

和547相同,这里不过要求不去重,不去重相对来说是简单的,排序后用双指针是最简单的一个方法:

vector intersection(vector nums1, vector nums2) {
        // write your code here
        if(nums1.empty()||nums2.empty())     //特殊情况
        return vector();  
        sort(nums1.begin(),nums1.end());
        sort(nums2.begin(),nums2.end());
         //双指针
        auto beg1=nums1.begin();
        auto beg2=nums2.begin();  
        vector res;
         //双指针遍历
        while(beg1!=nums1.end()&&beg2!=nums2.end())
        {
            if(*beg1==*beg2)
            {
                res.push_back(*beg1);
                beg1++;
                beg2++;
            }
            else if(*beg1<*beg2)
            {
                beg1++;
            }
            else beg2++;
        }
        return res;
    }

基本上没有什么要注意的,特殊情况排除掉就可以了。

你可能感兴趣的:(548. 两数组的交 II)