从排序数组中删除重复项

2018-08-06  本文已影响0人  mrjunwang

因为不能使用额外数组空间,所以不能按将出现的元素复制到新的数组的思路来做。既然这样,设置两个指针i, j, 从开头0,1两个位置起,判断 nums[i]与nums[j]的值是否相等,如果不等,就将i,j指针往后移动一位。如果相等,就只移动j指针,继续判断下一个与i的值是否相等。找到不等的值后就将这个值复制到i的后一位,这样新的数组就可以一步一步生成。循环一直到j到nums数组最后就结束

    public int getLength(int[] a){
        if(a==null){
            return 0;
        }
        int i=0;
        int j=1;
        while(i<a.length && j<a.length){
            if(a[i]==a[j]){
                j++;
            }
            else if(a[i]!=a[j]){
                i=i+1;
                a[i]=a[j++];
            }
        }
        return i+1;
    }
上一篇下一篇

猜你喜欢

热点阅读