删除排序数组中的重复项

143 阅读1分钟

使用快慢指针i,j的方式,如果nums[i]==nums[j]那么指针保i持不变,指针j递增(j+1)继续比较nums[i]是否等于nums[j+1],如果此时num[j+1]!=num[i]那么将指针j+1处的数组值移动改到num[i]中并且i++,j++。之后继续循环如上步骤,这样子数组索引值0到里面存的都是去重后的值,返回的数组长度为i+1,代码如下:

public class RemoveDuplicates {
    public static void main(String[] args) {
        int[] num = new int[]{1,1,2};
        int i = removeDuplicates(num);
        System.out.println(i);
    }

    public static int removeDuplicates(int[] nums) {
        if (nums.length == 1) return nums.length;
        int i = 0;
        for (int j = i + 1; j < nums.length; j++) {
            if (nums[i] != nums[j]) {
                nums[++i] = nums[j];
            }
        }
        return i + 1;
    }
}