将两个数组合并按照升序排列,并去掉重复的元素。
思路:首先将两个无序的数组排列有序,然后将其合并到另一个数组中,合并过程中遇到重复元素则不放入数组,有点类似归并排序的合并操作。华为oj上面错了一个用例,也不知道为什么。
/**
* 输入说明,按下列顺序输入:
*1 输入第一个数组的个数
*2 输入第一个数组的数值
*3 输入第二个数组的个数
*4 输入第二个数组的数值输出
*输出合并之后的数组
*样例输入 3 1 2 5 4 -1 0 3 2
*样例输出 -101235
*/
import java.util.Arrays;
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int m=scanner.nextInt();
int[] a=new int[m];
for(int i=0;i<m;i++){
a[i]=scanner.nextInt();
}
int n=scanner.nextInt();
int[] b=new int[n];
int[] result=new int[m+n];
for(int i=0;i<n;i++){
b[i]=scanner.nextInt();
}
Arrays.sort(a);
Arrays.sort(b);
int i=0;
int j=0;
int count=0;
while(i<m&&j<n){
if(a[i]<b[j]){
if(count==0||result[count-1]!=a[i]){
result[count]=a[i];
count++;
}
i++;
}else{
if(count==0||result[count-1]!=b[j]){
result[count]=b[j];
count++;
}
j++;
}
}
while(i<m){
if(count==0||result[count-1]!=a[i]){
result[count]=a[i];
count++;
}
i++;
}
while(j<n){
if(count==0||result[count]!=b[j]){
result[count]=b[j];
count++;
}
j++;
}
for(int k=0;k<count;k++){
System.out.print(result[k]);
}
System.out.println();
}
}