LeetCode(350)Intersection of Two Arrays II
Posted 逆風的薔薇
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode(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.
Follow up:
- What if the given array is already sorted? How would you optimize your algorithm?
- What if nums1's size is small compared to nums2'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?
分析
求含重复元素的两数组交集,同样采用哈希的思想,求交集同时更新元素个数。代码
#include <iostream>
#include <cstdlib>
#include <vector>
#include <map>
using namespace std;
class Solution
public:
vector<int> intersect(vector<int>& nums1, vector<int>& nums2)
if (nums1.empty() || nums2.empty())
return vector<int>();
int l1 = nums1.size(), l2 = nums2.size();
map<int, int> m;
for (int i = 0; i < l1; ++i)
++m[nums1[i]];
//for
vector<int> ret;
for (int i = 0; i < l2; ++i)
if (m[nums2[i]] > 0)
ret.push_back(nums2[i]);
--m[nums2[i]];
//if
//for
return ret;
;
int main()
vector<int> v1 = 1,2,2,1 , v2 = 2,2 ;
vector<int> ret = Solution().intersect(v1, v2);
system("pause");
return 0;
GitHub源码
以上是关于LeetCode(350)Intersection of Two Arrays II的主要内容,如果未能解决你的问题,请参考以下文章