两数组找相同元素

来源:互联网 发布:保定安全教育网络平台 编辑:程序博客网 时间:2024/05/16 06:26

本博客分享如何在两数组中找出相同元素。
对于两个数组,求它们公共元素,首先可以想到暴力求解,遍历数组,这种方法固然可以,可是当数组元素很大时,耗费的时间就比较多,而且效率较低。
所以暴力求解法此时是效率最低的算法,我们可以利用数据结构中的set,把其中一个数组数据存入set中,利用STL中set的函数查找另一个数组中的数是否存在set中。

编程练习题:
给两个整数(int)数组,输出相同的元素。
输入格式
m n
a1 a2 …. am
b1 b2 … bm
输出格式 相同元素打印输出,之间有空格隔开
代码如下:

#define _CRT_SECURE_NO_WARNINGS 1#include <iostream>#include <set>using namespace std;int main(){    int n, m;//n,m为两个数组的长度    int x;    bool first = true;    set<int> arr;    scanf("%d", &n);//输入第一个数组的长度    for (int i = 0; i < n; i++)    {        scanf("%d", &x);        arr.insert(x);    }    scanf("%d", &m);    for (int i = 0; i < m; i++)    {        scanf("%d", &x);        if (arr.find(x) != arr.end())//在另一个数组中存在这个数字  打印它        {            if (first)            {                first = false;            }            else            {                printf(" ");//打印空格,第一个数据前面没有空格            }            printf("%d", x);        }    }    system("pause");    return 0;}

运行结果:
这里写图片描述