题目标题:
将两个整型数组按照升序合并,并且过滤掉重复数组元素
详细描述:
接口说明
原型:
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程序实现
- import java.util.Scanner;
- import java.util.TreeSet;
- /**
- * 整形数组合并
- *
- * @author WWJ
- *
- */
- public class Main {
- @SuppressWarnings({ "resource", "null" })
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Scanner sc = new Scanner(System.in);
- while (sc.hasNext()) {
- int intiArray1Num = sc.nextInt();
- int[] pArray1 = new int[intiArray1Num];
- for (int i = 0; i < pArray1.length; i++) {
- pArray1[i] = sc.nextInt();
- }
- int intiArray2Num = sc.nextInt();
- int[] pArray2 = new int[intiArray2Num];
- for (int i = 0; i < pArray2.length; i++) {
- pArray2[i] = sc.nextInt();
- }
- int[] pOutputArray = null;
- pOutputArray = CombineBySort(pArray1, intiArray1Num, pArray2, intiArray2Num, pOutputArray);
- for (int i = 0; i < pOutputArray.length; i++) {
- if (i == pOutputArray.length - 1) {
- System.out.println(pOutputArray[i]);
- } else {
- System.out.print(pOutputArray[i]);
- }
- }
- }
- }
- public static int[] CombineBySort(int[] pArray1, int intiArray1Num, int[] pArray2, int intiArray2Num,
- int[] pOutputArray) {
- // 正常情况可以对两个数组分别排序,然后再取排头的方法,但是此题可以用TreeSet来实现
- TreeSet<Integer> set = new TreeSet<>();
- for (int i = 0; i < pArray1.length; i++) {
- set.add(pArray1[i]);
- }
- for (int i = 0; i < pArray2.length; i++) {
- set.add(pArray2[i]);
- }
- int k = 0;
- pOutputArray = new int[set.size()];
- for (int i : set) {
- pOutputArray[k] = i;
- k++;
- }
- return pOutputArray;
- }
- }