重复的元素都不要

在单调数组中,将出现的重复元素一个都不要。

示例:
原始数组为 [1,1,2,2,3,4,5],由于1,2存在重复,所以数组变成[3,4,5]

示例:原始数组为[0,2,2,2,2,2,5],由于2存在重复,所以返回[0,5]
注意:不用考虑数组里的元素都是一样的情况

代码 : (指针)

 public static int[] arrays(int[] arr) {
        if (arr == null || arr.length == 0) {
            return null;
        }
        if (arr.length == 1) {
            return arr;
        }
        int index = 0;
        int left = 0;
        for (int right = 1; right < arr.length; ) {
            if (arr[left] == arr[right]) {
                right++;
            } else {
                if (left == 0 && right == 1) {
                    index++;
                    left++;
                    continue;
                }
                if (right == arr.length - 1) {
                    arr[index] = arr[right];
                    break;
                }
                left = right++;
                if (arr[left] != arr[right]) {
                    arr[index++] = arr[left++];
                    arr[index++] = arr[left];
                }
            }
        }
        return arr;
    }

代码 : (哈希) 

 public static int[] array(int[] arr) {
        if (arr == null || arr.length == 0) {
            return null;
        }
        if (arr.length == 1) {
            return arr;
        }
        HashMap map = new HashMap<>();
        for (int i = 0; i < arr.length; i++) {
            if (!map.containsKey(arr[i])) {
                map.put(arr[i], 0);
            } else {
                map.put(arr[i], map.get(arr[i]) + 1);
            }
        }
        int n = 0;
        for (int i = 0; i < arr.length; i++) {
            if (map.get(arr[i]) == 0) {
                arr[n++] = arr[i];
            }
        }
        return arr;
    }

你可能感兴趣的:(java,算法,数据结构)