关于数组的算法面试题:找出数组中的重复元素,并且将数组排序。

一:一个数组如何找出重复元素,并打印出重复次数。并且排序.
思路:利用HashMap ---- key的不可重复性实现

/**
 * @ClassName bubbing
 * @Author 
 * @Date 2020/5/11
 * @description : 冒泡排序  并去除数组中的重复数据
 * @Version V1.0
 **/
public class bubbing {

    public static void main(String[] args) {
        int[] arr = new int[]{1, 2, 5, 3, 4, 6, 8, 3, 8, 9, 7, 9};
        for (int i = 0; i < arr.length - 1; i++) {

            for (int j = 0; j < arr.length - i - 1; j++) {
                if (arr[j] > arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }

        }
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }

        Map<Integer, Integer> map = findRepetition(arr);
        if (map != null) {
            for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
                if (entry.getValue() > 1) {
                    System.out.println("元素 " + entry.getKey() + " 重复出现" + entry.getValue() + "次");
                } else {
                    System.out.println("元素 " + entry.getKey() + " 只出现1次 无重复");
                }
            }
        }

    }

    private static Map<Integer, Integer> findRepetition(int[] arr) {
        Map<Integer, Integer> map = new HashMap<>();
        if (arr == null || arr.length < 0) {
            return null;
        }
        for (int i = 0; i < arr.length; i++) {
        //利用hashMap的containKey进行值的比较,防止null值的情况
            if (map.containsKey(arr[i])) {
        //将数组中的值当做key  每次有重复的时候次数v+1  
                map.put(arr[i], map.get(arr[i]) + 1);
            }
            map.put(arr[i], 1);
        }


        return map;
    }


}

你可能感兴趣的:(算法)