# 350. Intersection of Two Arrays II

Given two arrays, write a function to compute their intersection.

Example:
Given nums1 = [1, 2, 2, 1]nums2 = [2, 2], return [2, 2].

Note:

• Each element in the result should appear as many times as it shows in both arrays.
• The result can be in any order.

• What if the given array is already sorted? How would you optimize your algorithm?
• What if nums1's size is small compared to num2's size? Which algorithm is better?
• What if elements of nums2 are stored on disk, and the memory is limited such that you cannot load all elements into the memory at once?

Sort and two pointers Solution: Time: O(max(m, n) log(max(m, n))) Space: O(m + n)     Runtime: 12 ms

class Solution {
public:
vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {
std::sort(nums1.begin(),nums1.end());
std::sort(nums2.begin(),nums2.end());
vector<int> res;
int len1=nums1.size();
int len2=nums2.size();
int i=0,j=0;
while(i<len1&&j<len2)
{
if(nums1[i]<nums2[j])
i++;
else if(nums1[i]>nums2[j])
j++;
else
{
res.push_back(nums1[i]);
i++;
j++;
}
}
return res;
}
};

hash table——unordered_map   Hash table solution: Time: O(m + n) Space: O(m + n)  Runtime: 12 ms

class Solution {
public:
vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {
unordered_map<int,int> m;
vector<int> res;
int len1=nums1.size();
int len2=nums2.size();
for(int  i=0;i<len1;i++)
m[nums1[i]]++;
for(int  i=0;i<len2;i++)
if(--m[nums2[i]]>=0)
res.push_back(nums2[i]);
return res;
}
};

Hash table solution2: Time: O(m + n) Space: O(m)  Runtime: 12 ms

class Solution {
public:
vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {
unordered_map<int,int> m;
vector<int> res;
int len1=nums1.size();
int len2=nums2.size();
for(int  i=0;i<len1;i++)
m[nums1[i]]++;
for(int  i=0;i<len2;i++)
if(m.find(nums2[i])!=m.end()&&--m[nums2[i]]>=0)
res.push_back(nums2[i]);
return res;
}
};

• 本文已收录于以下专栏：

## 350. Intersection of Two Arrays II

Given two arrays, write a function to compute their intersection.Example: Given nums1 = [1, 2, 2, 1...

## leetcode350~Intersection of Two Arrays II

Given two arrays, write a function to compute their intersection. Example: Given nums1 = [1, 2, 2...

## [leetcode] 350. Intersection of Two Arrays II

Given two arrays, write a function to compute their intersection. Example: Given nums1 = [1, 2, ...

## [LeetCode] 350. Intersection of Two Arrays II

[LeetCode] 350. Intersection of Two Arrays II 解题思路

## <LeetCode OJ> 349 / 350 Intersection of Two Arrays（I / II）

Total Accepted: 3212 Total Submissions: 6814 Difficulty: Easy Given two arrays, write a functio...

## LeetCode-349&350.Intersection of Two Arrays

https://leetcode.com/problems/intersection-of-two-arrays/ Given two arrays, write a function to co...

## leetcode解题之349 & 350. Intersection of Two Arrays Java版（求数组交集））

350. Intersection of Two Arrays II leetcode解题之349. Intersection of Two Arrays & 350. Intersection ...

举报原因： 您举报文章：深度学习：神经网络中的前向传播和反向传播算法推导 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)