1,题目要求
Given two arrays, write a function to compute their intersection.
Example:
Given nums1 = [1, 2, 2, 1], nums2 = [2, 2], return [2, 2].
求两个数组的交集。
2,题目思路
利用Hash表即可达到条件。需要注意的是,定义Hash表用到一个特殊的方法:
unordered_map方法,它是一个关联容器,内部采用的是hash表结构,拥有快速检索的功能。
用法有点像二维数组。具体信息如下:
关联容器:unordered_map详细介绍
在使用时需要头文件:
#include<unordered_map>
3,程序源码:
#include<algorithm>
#include<iostream>
#include<vector>
#include<unordered_map>
using namespace std;
class Solution {
public:
vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {
vector<int> res = {};
unordered_map<int ,int>Hashmap;
for(int i=0;i<nums1.size();i++)
Hashmap[nums1[i]]++;
for(int i=0;i<nums2.size();i++)
{
if (--Hashmap[nums2[i]]>=0)
res.push_back(nums2[i]);
}
return res;
}
};
int main()
{
Solution sol;
vector<int> nums1 = {1,2,2,1};
vector<int> nums2 = {2,2,3};
vector<int> res = sol.intersect(nums1,nums2);
for(int i=0;i<res.size();i++)
cout<<res[i]<<endl;
return 0;
}