一、题目描述
对于给定的由n个整数组成的数组{a1,a2,…,an}和m个整数组成的数组{b1,b2,…,bm},将它们合并后从小到大排序,并输出去重后的结果。
二、输入描述
第一行输入一个整数 n(1 ≤ n ≤ 150)代表数组 a 中元素个数。
第二行输入 n 个整数 a1, a2, …, an(-1 ≤ ai ≤ 105)代表数组 a 中的元素。
第三行输入一个整数 m(1 ≤ m ≤ 150)代表数组 b 中元素个数。
第四行输入 m 个整数 b1, b2, …, bm(-1 ≤ ai ≤ 105)代表数组 b 中的元素。
三、输出描述
输出按升序合并、去重后的数组。
四、示例
输入: 3
1 2 5
4
-1 0 3 2
输出:-101235
五、解题思路
1.数组1与数组2输入问题: 使用for循环读取数组到长度为n和m的int数组中。
2.去除重复数字问题: 使用HashMap中key值不能重复的特性。
3.排序问题: 经过2中的操作后本质为对HashMap中的key进行排序,将HashMap中的key转换为列表List后进行排序。
六、实现代码
import java.util.*;
public class Main{
public static void main(String[] args){
//读取输入
Scanner in = new Scanner(System.in);
int num1 = in.nextInt();
int[] nums1 = new int[num1];
for(int i = 0; i < num1; i++){
nums1[i] = in.nextInt();
}
int num2 = in.nextInt();
int[] nums2 = new int[num2];
for(int i = 0; i < num2; i++){
nums2[i] = in.nextInt();
}
//采用HashMap去重
Map<Integer,Integer> map = new HashMap<>();
for(int n1 : nums1){
map.put(n1,map.getOrDefault(n1,0)+1);
}
for(int n2 : nums2){
map.put(n2,map.getOrDefault(n2,0)+1);
}
//采用List排序
List<Integer> list = new ArrayList<>(map.keySet());
Collections.sort(list);
//输出
for(int out : list){
System.out.print(out);
}
}
}