浦发笔试编程题

将两个数组合并成一个数组,删除重复的元素然后排序

例如 [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确实写起来比较麻烦,也怪自己比较菜

猜你喜欢

转载自blog.csdn.net/t384061961/article/details/105465393