LeetCode 26. 删除有序数组中的重复项

Posted 数据结构和算法

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 26. 删除有序数组中的重复项相关的知识,希望对你有一定的参考价值。

截止到目前我已经写了 500多道算法题,其中部分已经整理成了pdf文档,目前总共有1000多页(并且还会不断的增加),大家可以免费下载
下载链接https://pan.baidu.com/s/1hjwK0ZeRxYGB8lIkbKuQgQ
提取码:6666



视频链接

来看下代码

//双指针解决
public int removeDuplicates(int[] A) {
    //边界条件判断
    if (A == null || A.length == 0)
        return 0;
    int left = 0;
    for (int right = 1; right < A.length; right++)
        //如果左指针和右指针指向的值一样,说明有重复的,
        //这个时候,左指针不动,右指针继续往右移。如果他俩
        //指向的值不一样就把右指针指向的值往前挪
        if (A[left] != A[right])
            A[++left] = A[right];
    return ++left;
}

或者还可以换一种解法,其实原理都是一样的。

public int removeDuplicates(int[] A) {
    int count = 0;//重复的数字个数
    for (int right = 1; right < A.length; right++) {
        if (A[right] == A[right - 1]) {
            //如果有重复的,count要加1
            count++;
        } else {
            //如果没有重复,后面的就往前挪
            A[right - count] = A[right];
        }
    }
    //数组的长度减去重复的个数
    return A.length - count;
}

以上是关于LeetCode 26. 删除有序数组中的重复项的主要内容,如果未能解决你的问题,请参考以下文章

算法leetcode|26. 删除有序数组中的重复项(rust重拳出击)

算法leetcode|26. 删除有序数组中的重复项(rust重拳出击)

LeetCode 26. 删除有序数组中的重复项

LeetCode 26.删除有序数组中的重复项

LeetCode 26 删除有序数组中的重复项

Leetcode刷题100天—26. 删除有序数组中的重复项(数组)—day76