# include<iostream>
#include<string>
#include<math.h>
#include<algorithm>
using namespace std;
int main()
{
int n, m;
cin >> n >> m;
int initial = 0;//记录交集元素的个数
int* N = new int[n];
for (int i = 0; i < n; i++)
cin >> N[i];
int* M = new int[m];
for (int i = 0; i < m; i++)
cin >> M[i];//好用!
sort(N, N + n);
sort(M, M + m);
int num1 = 0, num2 = 0;
int* initial1 = new int[min(n, m)];//记录交集
while(num1<n&&num2<m)//使得每一项都能得到比较
{
if (N[num1] < M[num2])
num1++;
else if (N[num1] > M[num2])
num2++;
else
{
initial1[initial] = N[num1];
num1++, num2++;
initial++;
}
}
cout << initial << endl;
for (int i = 0; i < initial; i++)
{
if (i == initial-1)
cout << initial1[initial-1];
else
cout << initial1[i] << " ";
}
delete[] N;
delete[] M;
delete[] initial1;
return 0;
}
求集合交集(集合很大) 小白写法
最新推荐文章于 2024-08-05 22:44:37 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)