从排序数组中删除重复项


从排序数组中删除重复项

给定一个有序数组,删除重复内容,使每个元素只出现一次,并返回新的长度。

不要为其他数组分配额外的空间,您必须通过在 o(1)额外的内存中修改输入数组来实现。

例如:nums[]={5 5 5 6 7 7 7 7 9 9 9 9 9}  有4个不同数字

在数值不同时才做处理

5 5 5 6 7 7 7 7 9 9 9 9 9

5 5 5 6 7 7 7 7 9 9 9 9 9

5 5 5 6 7 7 7 7 9 9 9 9 9

一个值记录数组中不同数字的个数,并且用这个值取作为下标覆盖掉原数组中改下标的值

class Solution {
    //用了一个快慢指针;是一样的就过,不一样的就放进去;
    public int removeDuplicates(int[] nums) {
        if(nums == null){
            return 0;
        }
        int arr=0;
        for(int i = 0; i < nums.length; i++){
            if(nums[i]!= nums[arr]){
                arr++;
                nums[arr] = nums[i];
            }
        }
        return ++arr;
    }
}

相关