美文网首页LeetCode
001-在一个已排序数组中原地移除重复元素

001-在一个已排序数组中原地移除重复元素

作者: Woodlouse | 来源:发表于2020-05-06 21:02 被阅读0次

    描述

    在一个已经排序的数组中,移除掉重复元素,保证每个元素只出现一次,返回移除元素后数组的长度;
    不可以重新生成一个数组,必须在常量内存中进行操作;

    例如:
    输入元素:A = [1, 1, 2];
    需要返回:length = 2, 新的数组为[1, 2];

    分析

    数组是有序数组,意味着:
    1)第一个元素一定是可以存在于最终结果数组中;
    2)相同的元素连续存放在数组中;
    3)相邻的元素只能是相同或者不相同;

    依此分析,设定两个游标:
    第一个游标指示为新数组的结尾元素,初始值为0;
    第二个游标指示为下一个需要判断的元素,初始值为1;

    依上设定,运行逻辑为:
    第二个游标指示的元素和第一个游标指示的元素不相同,则将第一个游标后移一位,将第二个游标指示的元素赋值给第一个游标指示的位置;

    实现

    int removeDuplicatesFromSortedArray(int A[], int n)
    {
        if(n==0) {
            return 0;
        }
        
        int index = 0;
        for(int i=1; i<n; i++) {
            if (A[i] != A[index]) {
                A[++index] = A[i];
            }
        }
        return index + 1;
    }
    

    代码在这儿

    相关文章

      网友评论

        本文标题:001-在一个已排序数组中原地移除重复元素

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