资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
给定两个含有n个元素的升序整型数组a和b,求出其共同元素
输入格式
第一行包含两个整数n,
接下来2行,每行n个正整数,分别表示数组a,b中元素。
输出格式
输出1行,包括所有的公共元素,按升序输出
输入数据时对每个元素出现的次数进行统计,出现了两次的元素就是两个集合共有的元素
int flag[500000] = {0};//记录每个元素出现的次数
但凡我会哈希表都不至于这样【泪目】
#include<iostream>
#include<algorithm>
//#include<bits/stdc++.h>
using namespace std;
int main()
{
long n;
int flag[500000] = {0};//记录每个元素出现的次数
cin >> n;
long lst[2][n];//两个集合
long va[n];//最后的交集
long k = 0;
for (int i = 0; i < 2;i++)
{
for (int j = 0; j < n;j++)
{
cin >> lst[i][j];
flag[lst[i][j]]++;//次数加一
if(flag[lst[i][j]]==2)//出现了两次表示两个集合都有这个元素
{
va[k++] = lst[i][j];
}
}
}
for (int i = 0; i < k;i++)
cout << va[i] << " ";
cout << endl;
system("pause");
return 0;
}
因为输入的数据是有从小到达的,所以最后va数组不排序也是从小到大的顺序