Erase Duplicate in an Unsorted Array

题目:
从未排序的array里面把重复的删掉。

解题思路:
这道题可以有两种方法:1.首先将array排序,然后用双指针来操作;2.也可以用一个set来存出现过的元素。

代码:

public void erase(int[] input){
    if(input == null || input.length == 0){
        return;
    }
    Arrays.sort(input);
    int slow = 0;
    int fast = 0;
    int len = input.length;
    while(fast <= len - 1){
        while(fast <= len - 1 && input[fast] == input[slow]){
            fast++;
        }
        if(fast <= len - 1){
            input[++slow] = input[fast];
            fast++;
        }
    }
}

public static void main(String[] args){
    int[] input = {1, 1, 2, 3, 3, 4, 4, 4};
    EraseDuplicateinanUnsortedArray eraseDuplicateinanUnsortedArray = new EraseDuplicateinanUnsortedArray();
    eraseDuplicateinanUnsortedArray.erase(input);
    System.out.println(Arrays.toString(input));
}

Comments

Popular Posts