原地算法之从排序数组中删除重复项

算法原地工作是指算法所需的辅助空间相对于输入数据量而言是常量。

问题
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。

 JAVA实现

    public int removeDuplicates(int[] nums) {
        /*首先应该判断是否为空数组*/
        if(nums == null||nums.length ==0){
            return 0;
        }
        int k=1;
        for(int i=1;i<nums.length;i++){
            if(nums[i]!=nums[i-1]){
               nums[k++]=nums[i];
            }
        }
        return k;
    }

多一个额外空间用来记录一共有多少个不相同的元素即可,并且用对应的数组下标存放不重复的数组值

posted @ 2019-01-05 18:43  RayChou1995  阅读(555)  评论(0编辑  收藏  举报