给定两个整型数组,本题要求找出不是两者共有的元素。
输入格式:
输入分别在两行中给出两个整型数组,每行先给出正整数N(≤20),随后是N个整数,其间以空格分隔。
输出格式:
在一行中按照数字给出的顺序输出不是两数组共有的元素,数字间以空格分隔,但行末不得有多余的空格。题目保证至少存在一个这样的数字。同一数字不重复输出。
输入样例:
10 3 -5 2 8 0 3 5 -15 9 100
11 6 4 8 2 6 -5 9 0 100 8 1
结尾无空行
输出样例:
3 5 -15 6 4 1
结尾无空行
import java.util.*;
public class Main{
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
int [] q=new int [100];
int [] p=new int [100];
int [] t=new int [100];
int [] w=new int [100];
int i,j,k=0;
int a,b,c=0;
int n,m=0;
a=sc.nextInt();
for(i=0;i<a;i++)
q[i]=sc.nextInt();
b=sc.nextInt();
//a有但b没有
for(i=0;i<b;i++)
p[i]=sc.nextInt();
for(i=0;i<a;i++)
{
for(j=0;j<b;j++)
{
if(q[i]==p[j])
break;
}
if(j>=b)
{
t[k]=q[i];
k++;
}
}
//b有但a没有
for(i=0;i<b;i++)
{
for(j=0;j<a;j++)
{
if(p[i]==q[j])
break;
}
if(j>=a)
{
t[k]=p[i];
k++;
}
}
//去重合并
for(i=0;i<k;i++)
{
for(c=0;c<m;c++)
{
if(t[i]==w[c])
break;
}
if(c>=m)
{
w[m]=t[i];//m开始是空的,可以继续赋值合并到同一个数组里
m++;
}
}
for(i=0;i<m;i++)
{
if(i!=m-1)
System.out.printf("%d ",w[i]);
if(i==m-1)
System.out.printf("%d",w[i]);
}
}
}