两个数组的交集(c++题解)

题目描述

题目描述

给定两个数组 nums1nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。按照从小到大的顺序输出两个数组的交集。

输入格式

第一行输入两个整数 和 ,分别表示nums1nums2 两个数组元素数量。

第二行输入个空格分开的整数,表示nums1 数组。

第二行输入个空格分开的整数,表示nums2 数组。

输出格式

按照从小到大的顺序输出两个数组的交集。

样例
样例输入1
复制代码
复制4 2
1 2 2 1
2 2
样例输出1
复制代码
复制2
样例输入2
复制代码
复制3 5
4 9 5
9 4 9 8 4
样例输出2
复制代码
复制4 9

日常发作业题解。

也是简单到爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆表的题

写作不易,点个赞呗!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
int n,m,idx;
int a[1000005],b[1000005],c[1000005];
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++)cin>>a[i];
	for(int i=1;i<=m;i++)cin>>b[i];
	sort(a+1,a+1+n);
	sort(b+1,b+1+m);
	int f=1,s=1;
	while(f<=n&&s<=m){//快慢指针法
		if(a[f]>b[s])s++;
		if(a[f]<b[s])f++;
		if(a[f]==b[s]){
			if(c[idx]!=a[f]){//去重
				idx++;
				c[idx]=a[f];
			}
			f++,s++;
		}
	}
	for(int i=1;i<=idx;i++)cout<<c[i]<<" ";
}
相关推荐
2401_891482172 分钟前
C++代码复杂性分析
开发语言·c++·算法
keep intensify4 分钟前
单词搜索-
算法·深度优先
zx_zx_1234 分钟前
定长滑动窗口和不定长滑动窗口
数据结构·算法
mjhcsp11 分钟前
C++ 梯度下降法(Gradient Descent):数值优化的核心迭代算法
开发语言·c++·算法
yunyun3212318 分钟前
跨语言调用C++接口
开发语言·c++·算法
m0_5180194821 分钟前
C++中的装饰器模式变体
开发语言·c++·算法
xushichao198928 分钟前
高性能密码学库
开发语言·c++·算法
偷懒下载原神28 分钟前
【linux操作系统】信号
linux·运维·服务器·开发语言·c++·git·后端
m0_5180194830 分钟前
C++代码混淆与保护
开发语言·c++·算法
m0_5698814733 分钟前
C++中的智能指针详解
开发语言·c++·算法