美文网首页
数组类26--删除重复数字(E)

数组类26--删除重复数字(E)

作者: 干LeetCode | 来源:发表于2019-08-12 23:39 被阅读0次

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。

不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。

AC代码

class Solution {
    public int removeDuplicates(int[] nums) {
        if(nums == null || nums.length == 0) {
            return 0;
        }
        if(nums.length == 1) {
            return 1;
        }
        int cur = nums[0];
        int step = 0;
        int ans = 1;
        // int len = nums.length;
        for(int i = 1; i < nums.length; i++) {
            //计数
            if(nums[i] == cur) {
                step++;
                // len--;
                continue;
            }
            ans++;
            cur = nums[i];
            //移动
            for(int j = i; j < nums.length; j++) {
                // nums[j - step] = nums[j];
                for(int k = 1; k <= step; k++) {
                    nums[j - k] = nums[j];
                }
            }
            i = i - step;
            step = 0;
        }
        return ans;
    }
}

比较笨的方法,效率不高
评论区大佬代码,思路很好,用两个指针,一个指向当前,另一个指向待定的,如果不相等则赋值

class Solution {
    public int removeDuplicates(int[] nums) {
        // 使用双指针
        if(nums==null || nums.length == 1){
            return nums.length;
        }
        int i = 0,j =1;
        while(j<nums.length){
            if(nums[i]==nums[j]){
                j++;
            }else{
                i++;
                nums[i]=nums[j];
                j++;
            }
        }
        return i+1;
    }
}

相关文章

  • 数组类26--删除重复数字(E)

    给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的...

  • 顺序表

    1.删除排序数组中的重复数字 给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的...

  • lintcode-删除排序数组中的重复数字

    删除排序数组中的重复数字 利用库函数,偷懒法

  • 算法随笔

    原地删除重复的数字 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长...

  • 删除数组中重复数字,返回删除后数组长度

    题目 删除数组中重复数字,返回删除后数组长度;不能使用额外空间;举例:给定 [1,1,3,3,5],返回3。解释:...

  • vim 常用方法

    删除、复制、粘贴类 插入类 行移动类 光标移动类 跳转类 查找类 撤回类 环境类 其他 注意:数字通常代表重复做几...

  • java实现删除数组重复数字(数组)

    给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的...

  • 数组

    一、无序数组(假设数组元素不重复) 下面我们建立一个类,对数组的检索、插入、删除、打印操作进行封装 无序数组的优点...

  • leecode刷题(1)-- 删除排序数组中的重复项

    leecode刷题(1)-- 删除排序数组中的重复项 删除排序数组中的重复项 给定一个排序数组,你需要在原地删除重...

  • LintCode题解 | 微软面试真题:删除排序数组中的重复数字

    【题目描述】给定一个排序数组,在原数组中“删除”重复出现的数字,使得每个元素只出现一次,并且返回“新”数组的长度。...

网友评论

      本文标题:数组类26--删除重复数字(E)

      本文链接:https://www.haomeiwen.com/subject/ugkmjctx.html