• 华为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
  • 相关阅读:
    [转]自定义水晶报表纸张大小
    [转]Winform(C#)DataGridView显示Tooltip
    格式化日期字符串
    工具下载地址
    servlet: org.apache.tomcat.util.http.fileupload.FileUploadException: Processing of multipart/formdata request failed
    <<精通Spring2.x>>笔记:第2章学习源码
    andriod 缩略图Thumbnails学习
    转: Eclipse程序员要掌握的常用快捷键
    代码:指定大小的图片
    Android自定义的Camera的图片会90度旋转问题
  • 原文地址:https://www.cnblogs.com/mukekeheart/p/5628004.html
Copyright © 2020-2023  润新知