两数组找相同的元素
【题目描述】给两个整数(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 超过一定规模之后不能直接用暴力求解
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))
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)
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])
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);
}
}
}
}
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))
#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;
}
#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; }