华为OJ平台——整形数组合并

题目描述:

  将两个整型数组按照升序合并,并且过滤掉重复数组元素

输入:

  输入说明,按下列顺序输入:
    1 输入第一个数组的个数
    2 输入第一个数组的数值
    3 输入第二个数组的个数
    4 输入第二个数组的数值

输出:

  输出合并之后的数组

输入样例:

  3 1 2 5 4 -1 0 3 2

输出样例:

  -101235

思路:

先将两个数组合并到一个中,然后对这个完整的数组进行排序,最后剔除重复的数据并输出

 1 import java.util.Scanner;
 2 
 3 public class ArrayMerge {
 4 
 5     public static void main(String[] args) {
 6         //输入,按输入的标准输入两个数组的数据
 7         Scanner cin = new Scanner(System.in) ;    
 8         int len1 = cin.nextInt() ;
 9         if(len1 < 1){
10             System.exit(-1);
11         }
12         int [] arr1 = new int [len1] ;
13         for(int i = 0 ; i < len1 ; i++){
14             arr1[i] = cin.nextInt() ;
15         }
16         int len2 = cin.nextInt() ;
17         if(len2 < 1){
18             System.exit(-1);
19         }
20         int [] arr2 = new int [len2] ;
21         for(int i = 0 ; i < len2 ; i++){
22             arr2[i] = cin.nextInt() ;
23         }        
24         cin.close() ;
25         
26         System.out.print(intArrayMergeASC(arr1,arr2)) ;                
27     }
28 
29     /**
30      * 进行合并,然后将输出结果存放到一个字符串中返回
31      * @param arr1
32      * @param arr2
33      * @return
34      */
35     private static String intArrayMergeASC(int[] arr1, int[] arr2) {
36         //将两个数组合并到一个较大的数组中
37         int [] total = new int [arr1.length + arr2.length] ;
38         for(int i = 0 ; i < arr1.length ; i++){
39             total[i] = arr1[i] ;
40         }
41         for(int i = 0 ; i < arr2.length ; i++){
42             total[i+arr1.length] = arr2[i] ;
43         }
44         //对合并后的数组排序
45         sort(total) ;
46         //保存在结果在字符串中
47         String res = total[0]+"" ;
48         int last = total[0] ;
49         for(int i = 1 ; i < total.length ; i++){
50             //不相同的则添加到字符串中,相同的则直接下一个
51             if(total[i] != last){
52                 last = total[i] ;
53                 res += total[i] + "" ;
54             }
55         }
56         
57         return res;
58         
59     }
60     
61     /**
62      * 简单选择排序算法对数组进行排序
63      * @param arr
64      */
65     private static void sort(int[] arr) {
66         int min ;
67         int index ;
68         for(int i = 0 ; i < arr.length-1 ; i++){
69             min = arr[i] ;
70             index = i ;
71             for(int j = i+1 ; j < arr.length ; j++){
72                 if(min > arr[j]){
73                     min = arr[j] ;
74                     index = j ;
75                 }
76             }
77             if(index != i){
78                 arr[index] = arr[i] ;
79                 arr[i] = min ;                
80             }
81         }
82     }
83     
84 }
Code

 

posted on 2016-06-29 19:24  mukekeheart  阅读(464)  评论(0编辑  收藏  举报