• 华为机试-整形数组合并


    题目标题:
    将两个整型数组按照升序合并,并且过滤掉重复数组元素
    详细描述:
    接口说明
    原型:
    voidCombineBySort(int* pArray1,intiArray1Num,int* pArray2,intiArray2Num,int* pOutputArray,int* iOutputNum);
    输入参数:
    int* pArray1 :整型数组1
    intiArray1Num:数组1元素个数
    int* pArray2 :整型数组2
    intiArray2Num:数组2元素个数
    输出参数(指针指向的内存区域保证有效):
    int* pOutputArray:合并后的数组
    int* iOutputNum:合并后数组元素个数
    返回值:
    void


    知识点 排序,数组
    运行时间限制 10M
    内存限制 128
    输入
    输入说明,按下列顺序输入:
    1 输入第一个数组的个数
    2 输入第一个数组的数值
    3 输入第二个数组的个数
    4 输入第二个数组的数值
    输出
    输出合并之后的数组
    样例输入 3 1 2 5 4 -1 0 3 2
    样例输出 -101235

    Java程序实现

    1. import java.util.Scanner;  
    2. import java.util.TreeSet;  
    3.   
    4. /** 
    5.  * 整形数组合并 
    6.  *  
    7.  * @author WWJ 
    8.  * 
    9.  */  
    10. public class Main {  
    11.     @SuppressWarnings({ "resource", "null" })  
    12.     public static void main(String[] args) {  
    13.         // TODO Auto-generated method stub  
    14.         Scanner sc = new Scanner(System.in);  
    15.   
    16.         while (sc.hasNext()) {  
    17.             int intiArray1Num = sc.nextInt();  
    18.             int[] pArray1 = new int[intiArray1Num];  
    19.             for (int i = 0; i < pArray1.length; i++) {  
    20.                 pArray1[i] = sc.nextInt();  
    21.             }  
    22.   
    23.             int intiArray2Num = sc.nextInt();  
    24.             int[] pArray2 = new int[intiArray2Num];  
    25.             for (int i = 0; i < pArray2.length; i++) {  
    26.                 pArray2[i] = sc.nextInt();  
    27.             }  
    28.   
    29.             int[] pOutputArray = null;  
    30.             pOutputArray = CombineBySort(pArray1, intiArray1Num, pArray2, intiArray2Num, pOutputArray);  
    31.   
    32.             for (int i = 0; i < pOutputArray.length; i++) {  
    33.                 if (i == pOutputArray.length - 1) {  
    34.                     System.out.println(pOutputArray[i]);  
    35.                 } else {  
    36.                     System.out.print(pOutputArray[i]);  
    37.                 }  
    38.   
    39.             }  
    40.         }  
    41.     }  
    42.   
    43.     public static int[] CombineBySort(int[] pArray1, int intiArray1Num, int[] pArray2, int intiArray2Num,  
    44.             int[] pOutputArray) {  
    45.         // 正常情况可以对两个数组分别排序,然后再取排头的方法,但是此题可以用TreeSet来实现  
    46.         TreeSet<Integer> set = new TreeSet<>();  
    47.         for (int i = 0; i < pArray1.length; i++) {  
    48.             set.add(pArray1[i]);  
    49.         }  
    50.         for (int i = 0; i < pArray2.length; i++) {  
    51.             set.add(pArray2[i]);  
    52.         }  
    53.         int k = 0;  
    54.   
    55.         pOutputArray = new int[set.size()];  
    56.         for (int i : set) {  
    57.             pOutputArray[k] = i;  
    58.             k++;  
    59.         }  
    60.         return pOutputArray;  
    61.   
    62.     }  
    63. }  
  • 相关阅读:
    【域控】获取域控用户
    【MongoDB】开启认证权限
    【MongoDB】 安装为windows services
    【 Quartz】使用 JobListener (任务监听器可实现) 我想在一个任务执行后在执行第二个任务怎么办呢
    【多路复用】I/O多路复用
    静态类和静态类成员
    C#
    response.redirect和server.Transfer的差别详解
    DataReader
    受管制的代码和强类型系统
  • 原文地址:https://www.cnblogs.com/wwjldm/p/7097251.html
Copyright © 2020-2023  润新知