两个数组的交集(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]<<" ";
}
相关推荐
music&movie30 分钟前
算法工程师认知水平要求总结
人工智能·算法
秦少游在淮海34 分钟前
C++ - string 的使用 #auto #范围for #访问及遍历操作 #容量操作 #修改操作 #其他操作 #非成员函数
开发语言·c++·stl·string·范围for·auto·string 的使用
const54442 分钟前
cpp自学 day2(—>运算符)
开发语言·c++
虾球xz1 小时前
CppCon 2015 学习:CLANG/C2 for Windows
开发语言·c++·windows·学习
laocui11 小时前
Σ∆ 数字滤波
人工智能·算法
CodeWithMe2 小时前
【C/C++】namespace + macro混用场景
c语言·开发语言·c++
yzx9910132 小时前
Linux 系统中的算法技巧与性能优化
linux·算法·性能优化
全栈凯哥2 小时前
Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解
java·算法·leetcode·链表
全栈凯哥2 小时前
Java详解LeetCode 热题 100(27):LeetCode 21. 合并两个有序链表(Merge Two Sorted Lists)详解
java·算法·leetcode·链表
SuperCandyXu2 小时前
leetcode2368. 受限条件下可到达节点的数目-medium
数据结构·c++·算法·leetcode