题目描述
给定两个数组,编写一个函数来计算它们的交集。
示例
输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出: [9,4]
输入
第一行两个整数n,m,分别为num1,num2的长度(1 ≤ n, m ≤ 100)
第二行n个整数,代表数组nums1
第三行m个整数,代表数组nums2
输出
按交集元素在num2中的顺序输出两数组的交集。
输出结果中的每个元素一定是唯一的。
例如
输入:
4 2
1 2 2 1
2 2
输出:
2
思路
可以利用哈希表来求解。将第一个数组中的数存到哈希表中,之后遍历第二个数组,看数组中的数是否在哈希表中出现,(在这里使用的一个技巧是,如果在哈希表中删除第二个数组中的数成功,则输出该数,删除成功,就证明与第一个数组有交集)
代码
#include<set>
using namespace std;
int main()
{
int n,m,a[101],b[101];
set<int>c;
cin>>n>>m;
for(int i=0;i<n;i++)
{
cin>>a[i];
c.insert(a[i]);
}
for(int j=0;j<m;j++)
{
cin>>b[j];
if(c.erase(b[j]))
cout<<b[j]<<" ";
}
}