华为oj--整型数组合并

来源:互联网 发布:如何更换淘宝会员名 编辑:程序博客网 时间:2024/05/20 20:43

将两个数组合并按照升序排列,并去掉重复的元素。

思路:首先将两个无序的数组排列有序,然后将其合并到另一个数组中,合并过程中遇到重复元素则不放入数组,有点类似归并排序的合并操作。华为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();}}



0 0
原创粉丝点击