LeetCode

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

2020-05-06  本文已影响0人  Woodlouse

描述

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

例如:
输入元素: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;
}

代码在这儿

上一篇下一篇

猜你喜欢

热点阅读