力扣,第26题删除有序数组重复项,我有问题

提示有一个数没有删除。
我的思路是,i相当于编号,第一个数,第二个数。
然后第i个和他下一个数是否相同。
如果相同,使用循环把后面所有数组向前移一位,然后数组长度减一(numsSize,题目中系统自动给出数组长度)。
然后就这样,但是提示有一步不行,我不知道哪里出问题了

img

img

img


我本来就是numsSize-1,后来改成-2是因为,改后他提示通过数量高

修改如下,供参考:

int removeDuplicates(int* nums, int numsSize) 
{
    int i, j;
    for (i = 0; i < numsSize - 1;) {
        if (nums[i] == nums[i + 1]) {
            for (j = i + 1; j < numsSize - 1; j++) {
                nums[j] = nums[j + 1];
            }
            numsSize--;
        }
        else
            i++;
    }
    return numsSize;
}

当城管删除一个重复值后,除了numsSize要减去1,循环变量i也要减去1。否则如果三个连续值重复的话,第三个值你删不掉