码迷,mamicode.com
首页 > 编程语言 > 详细

LeetCode 350. 两个数组的交集 II Intersection of Two Arrays II

时间:2020-05-30 01:20:17      阅读:70      评论:0      收藏:0      [点我收藏+]

标签:solution   http   order   src   arrays   ash   turn   for   intersect   

技术图片

 

进阶解法1:排序双指针

class Solution {
public:
    vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {

        sort(nums1.begin(), nums1.end());
        sort(nums2.begin(), nums2.end());

        int p1 = 0, p2 = 0, index = 0;
        while(p1 < nums1.size() && p2 < nums2.size())
        {
            if (nums1[p1] < nums2[p2])
                ++p1;
            else if (nums1[p1] > nums2[p2])
                ++p2;
            else
            {
                nums1[index++] = nums1[p1++];  //nums1的值不会被多余覆盖
                ++p2;
            }
        }
        return vector(nums1.begin(), nums1.begin() + index);
    }
};

 

进阶解法2、3:将小一些的数组存储成哈希表后在长数组上遍历。

class Solution {
public:
    vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {
        if (nums1.size() > nums2.size())  //nums1较大, 交换数组
            return intersect(nums2, nums1);

        unordered_map<int, int> hash;
        for (int num : nums1)
            ++hash[num];
        
        int index = 0;
        for (int num : nums2)
        {
            if (hash.count(num) && --(hash[num]) >= 0)
                nums1[index++] = num;
        }
        return vector(nums1.begin(), nums1.begin() + index);
    }
};

 

LeetCode 350. 两个数组的交集 II Intersection of Two Arrays II

标签:solution   http   order   src   arrays   ash   turn   for   intersect   

原文地址:https://www.cnblogs.com/ZSY-blog/p/12990125.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!