首页 > 试题广场 >

两数组找相同的元素

[问答题]

两数组找相同的元素

题目描述给两个整数(int)数组,输出相同的元素。

输入格式

m n

a1 a2 … am

b1 b2 … bn

输出格式

相同的的元素,用空白分开

输入样例

5 4

11 15 9 12 3

1 8 3 7

输出样例

3

数据规模

对于30%的数据,  0 < m < 30, 0 < n < 30

对于100%的数据,0 < m < 100000, 0 < n < 100000

想考察当m,n 超过一定规模之后不能直接用暴力求解

推荐


#include <bits/stdc++.h>
using namespace std;//插入set,然后对于每个元素在set里面查找。。数据量比较大用scanf
int main() {
    int n, m;
    int x;
    bool first = true;
    set<int> a;
    scanf("%d", &n);
    for (int i = 0; i < n; ++i) scanf("%d", &x), a.insert(x);
    scanf("%d", &m);
    for (int i = 0; i < m; ++i) {
        scanf("%d", &x);
        if (a.find(x) != a.end()) {
            if (first) first = false; else printf(" ");
            printf("%d", x);
        }
    }
    return 0;
}

编辑于 2017-07-28 16:52:28 回复(0)
def Common(a,b):
    c = [x for x in a if x in b]
    d = set(c)
    return d

a = [1,2,3,4,5,6,7,8,9,10,11,12,3,6,9]
b = [2,4,6,8,10,4,5,6]
print(Common(a,b))


发表于 2021-10-05 18:43:25 回复(0)
a=[1,2,3,4,5,6,7,8,9,10,11,12,3]
b=[1,3,5,7,9,11]
c=[x for x in a if x in b]
d=list(set(c))
print(d)

发表于 2018-03-20 22:12:27 回复(0)
public static String leng(int[] a, int[] b){
        String str = "";
        if(a.length==0||b.length==0){
            str = "两组数据中存在为空的数组";
        }else{
            for (int i = 0; i < a.length; i++) {
                for (int j = 0; j < b.length; j++) {
                   if(a[i]==b[j]){
                      str +=b[j]+" "; 
                   }
                }
            }
        }
        return str;
    }
    
    public static void main(String[] args) {
        int[] a={1,2,3,4};
        int[] b={1,4,5};
        System.out.println(leng(a,b));
    }
发表于 2017-12-08 16:23:55 回复(0)
public void repeat(int[] a,int[] b) {
        if (a.length==0 || b.length == 0) {
            System.out.println("两数组中存在空数组");
        }else {
            for (int i = 0; i < a.length; i++) {
                for (int j = 0; j < b.length; j++) {
                    if (a[i]==b[j]) {
                        System.out.println(a[i]);
                    }
                }
            }
        }
    }

编辑于 2017-10-17 11:25:09 回复(1)
return [ x for x in m if x in n]

发表于 2017-08-01 23:51:54 回复(0)
        public static int[] GetSameNumberFromTwoArray(int[] fristArr, int[] sencodArr)
        {
            if (fristArr.Length == 0 || sencodArr.Length == 0)
            {
                Console.WriteLine("");
            }
            //数组去重,避免重复检索
            var a = fristArr.Distinct();
            var b =sencodArr.Distinct();
            var arr = a.Where(t => b.Contains(t));
            return arr.ToArray();
发表于 2019-10-09 18:02:40 回复(0)
def shuzu():
        m=int(input("输入m的值:"))
        n=int(input("输入n的值:"))
        a=[]
        b=[]
        for i in range(1,m+1):
                a.append(int(input("a的值:")))

        for j in range(1,n+1):
                b.append(int(input("b的值:")))
        return a,b

a,b=shuzu()
print(a,b)
lis=[]
for x in a:
    for y in b:
        if y==x:
            lis.append(y)
print(lis)
        

发表于 2019-07-30 10:40:12 回复(0)
c=input().split(' ')
a=int(c[0])
b=int(c[1])
m=[]*a
n=[]*b
list1=input().split(' ') for i in range(a):
    m.append(int(list1[i]))
list2=input().split(' ') for i in range(b):
    n.append(int(list2[i]))
m=sorted(m)
n=sorted(n) for i in range(len(m)): for j in range(len(n)): if m[i]==n[j]: print(m[i])
发表于 2019-03-02 08:59:43 回复(0)
package com.nowcoder.test01;

import java.util.Arrays;
import java.util.Scanner;

public class ArrayDuplicate {

    public static void main(String[] args) {
        @SuppressWarnings("resource")
        Scanner input = new Scanner(System.in);
        System.out.println("请输入第一个数字");
        int a = input.nextInt();
        System.out.println("请输入第二个数字");
        int b = input.nextInt();
        search(a, b);

    }

    private static void search(int a, int b) {
        int[] numArray1 = new int[a];
        int[] numArray2 = new int[b];
        for (int i = 0; i < numArray2.length; i++) {
            numArray2[i] = (int) (Math.random() * 10);
        }
        System.out.println(Arrays.toString(numArray2));
        for (int i = 0; i < numArray1.length; i++) {
            numArray1[i] = (int) (Math.random() * 10);
        }
        System.out.println(Arrays.toString(numArray1));
        Arrays.sort(numArray1);
        Arrays.sort(numArray2);
        int num = 0;
        for (int i : numArray1) {
            if (Arrays.binarySearch(numArray2, i) != -1) {
                num = numArray2[Arrays.binarySearch(numArray2, i)];
                System.out.println(num);
            }
        }

    }

}

发表于 2018-06-03 11:24:07 回复(0)
def similar(v,s):
    t=[] for i in v: if i in s:
            t.append(i) return t

lst=input().split(' ')
m=int(lst[1])
n=int(lst[1])
s=[]
v=[]
lst1=input().split(' ')
lst2=input().split(' ') for i in range(m):
    s.append(int(lst1[i])) for i in range(n):
    v.append(int(lst1[i])) print(similar(v,s))
发表于 2018-04-22 10:51:57 回复(0)
c  = input().split(' ')
m = int(c[1])
n = int(c[0])
a = []*n
b = []*m
lint1 = input().split(' ')
for i in range(n):
    a.append(int(lint1[i]))
lint2  = input().split(' ')
for i in range(m):
    b.append(int(lint2[i]))
a = sorted(a)
b = sorted(b)
for i in range(len(a)):
    for j in range(len(b)):
        if a[i] == b[j]:
            print(a[i])
发表于 2018-04-20 15:33:40 回复(0)
#include <iostream>
#include <algorithm>
using namespace std;

int main()
{
int m, n;
while (cin >> m >> n)
{
int* a = new int[m];
int i;
for (i = 0;i < m;i++)
cin >> a[i];
int* b = new int[n];
for (i = 0;i < n;i++)
cin >> b[i];
sort(a, a + m); //排序
sort(b, b + n);  //排序
i = 0;
int j = 0;
while(i<m && j<n)
{
if (a[i] == b[j])  //相同就输出,都移向下一位
{
cout << a[i] << ' ';
i++;
j++;
}
else if (a[i] > b[j])  //谁小谁移向下一位
j++;
else
i++;
}
}
system("pause");
return 0;
}

发表于 2017-08-23 18:41:38 回复(0)

#include<iostream>

#include <algorithm>

using namespace std;

int main()

{

    int N,M;

    cin>>N>>M;

    int A[N];

    int B[M];

    for(int i=0;i<N;i++)

        cin>>A[i];

    for(int j=0;j<M;j++)

        cin>>B[j];

    sort(A,A+N);

    sort(B,B+M);

    int i=0;

    int j=0;

    while(i<N && j<M)

    {

        if(A[i]==B[j])

           {cout<<A[i]<<" ";

            i++;

            j++;}

        if(A[i]>B[j])

            j++;

        if(A[i]<B[j])

            i++;

    }

    return 0;

}

发表于 2017-08-22 16:05:18 回复(0)
package tests;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class TheSame {
    public static void main(String[] args) {
        Scanner scanner =new Scanner(System.in);
        int m=scanner.nextInt();
        int n=scanner.nextInt();
        List<Integer> same=new ArrayList<Integer>();
        List<Integer> temp=new ArrayList<Integer>();
        while (temp.size()<m) {
            temp.add(scanner.nextInt());
        }
        for (int i = 0; i <n; i++) {
            int a=scanner.nextInt();
               if (temp.contains(a)) {
                  same.add(a);
        }
                
        }
        for (int i = 0; i < same.size(); i++) {
            System.out.println(same.get(i));
        }
    }

}
 
发表于 2017-08-01 16:32:46 回复(0)