代码 测试用例 测试结果 测试结果 80. 删除有序数组中的重复项 II

双指针的问题。
now指针指向已经满足题目要求的数组的末尾,而i是去寻找接下来还有那些满足,满足的就接着放now指针指向的结尾处。
这题满足的条件有两种①i指向的数>now-1指向的数;②i指向的数=now-1指向的数,且now-1!=now-2(或者说now-1>now-2)。由于是递增的数组我们可以将两个条件(i=now-1; now-1>now-2; i>now-1)合并。

int removeDuplicates(int* nums, int numsSize) {
    if(numsSize <= 2 ){
        return numsSize;
    }
    int now=2;
    int i;
    for(i=2; i<numsSize; i++){
        if(nums[i] > nums[now-2]){
            nums[now++] = nums[i];
        }
    }
    return now;
}

你可能感兴趣的:(算法,算法,数据结构)