350两个数组的交集 II

廉价感情. 提交于 2020-01-22 00:57:34

给定两个数组,编写一个函数来计算它们的交集。

示例 1:

输入: nums1 = [1,2,2,1], nums2 = [2,2]
输出: [2,2]
示例 2:

输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出: [4,9]
说明:

输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。
我们可以不考虑输出结果的顺序。


方法一:普通向量法

class Solution {
public:
    vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {
        vector<int> result;
        for ( int i=0;i<nums2.size();i++ )
        {
            //查找函数,返回值为迭代器指针
            vector<int>::iterator it=find(nums1.begin(),nums1.end(),nums2[i]); 
            if(it!=nums1.end())
            {
                result.push_back(nums2[i]);
                nums1.erase(it);
            }
        }
        return result;
        
    }
};

 方法二:利用字典(map)的方法

class Solution {
public:
    vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {
        //字典的初始化
        map<int,int>record;
        for(int i=0;i<nums1.size();i++)
        {
            record[nums1[i]]++;
        }
        vector<int> result;
        for(int i=0;i<nums2.size();i++)
        {
            if(record[nums2[i]]>0)
                result.push_back(nums2[i]);
            //查找完之后,减一
            record[nums2[i]]--;
        }
        return result;
    }
};

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!