LeetCode : Intersection of Two Arrays II

来源:互联网 发布:约瑟夫环 java 数组 编辑:程序博客网 时间:2024/05/16 10:24

第一种方法是把数组放在map中进行比较。
第二种方法是将数组排好序后一次比较。

Solution 1

vector<int> Solution::intersect(vector<int>& nums1, vector<int>& nums2){    vector<int> result;    map<int, int> m;    for(int i = 0; i < nums1.size(); i++)        m[nums1[i]] ++;    for(int i = 0; i < nums2.size(); i++)    {        m[nums2[i]] --;        if(m[nums2[i]] >= 0)            result.push_back(nums2[i]);    }    return result;}

Solution 2

vector<int> Solution::intersect(vector<int>& nums1, vector<int>& nums2){    vector<int> result;    sort(nums1.begin(), nums1.end());    sort(nums2.begin(), nums2.end());    for(int i = 0, j = 0; i < nums1.size() && j < nums2.size();)    {        if(nums1[i] == nums2[j])        {            result.push_back(nums1[i]);            i++;            j++;        }        else if(nums1[i] > nums2[j]) j++;        else i++;    }    return result;}
0 0