【算法刷题记录001】整型数组合并(java代码实现)
一、题目描述
对于给定的由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 中的元素。
三、输出描述
输出按升序合并、去重后的数组。
四、示例
输入: 31 2 54-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);}}
}