将两个数组合并成一个数组,删除重复的元素然后排序
例如 [1,2,3,3]和[3,9,6]
合并为[1,2,6,9]
大体思路使用map将所有的数都进行计数,大于1的进行删除,最后转换为数组并且返回
package top.tyx666.test;
import java.util.*;
/**
* 将两个数组合并成一个数组,并且删除掉重复的元素然后排序
* 1,2,3
* 1,3,4,8,6
* 2,4,6,8
*/
public class Test5 {
public static void main(String[] args) {
int[] a = {1,2,3,3,3,3,3};
int[] b = {1,3,4,8,6,10};
int[] merge = merge(a, b);
for (int i = 0; i < merge.length; i++) {
System.out.print(merge[i] + " ");
}
}
public static int[] merge(int[] a,int[] b){
HashMap<Integer, Integer> map = new HashMap<>();
for(int i = 0;i<a.length;i++){
map.put(a[i],0);
}
for(int i = 0;i<b.length;i++){
map.put(b[i],0);
}
for(int i = 0;i<a.length;i++){
map.put(a[i],map.get(a[i]) + 1);
}
for(int i = 0;i<b.length;i++){
map.put(b[i],map.get(b[i]) + 1);
}
List<Integer> list = new ArrayList<>();
Iterator<Integer> iterator = map.keySet().iterator();
while (iterator.hasNext()){
Integer key = iterator.next();
if(map.get(key) > 1){
iterator.remove();
}else{
list.add(key);
}
}
Integer[] arr =list.toArray(new Integer[list.size()]);
Arrays.sort(arr);
int[] result = new int[list.size()];
for (int i = 0; i < result.length; i++) {
result[i] = arr[i];
}
return result;
}
}
当时在线笔试的时候不能使用本地IDE确实写起来比较麻烦,也怪自己比较菜