力扣,测试用例没错,提交出错

菜鸡求助
测试用例改了好几个都对,一提交就出错,不知道问题出在哪里了
以下是代码和错误
img

img
帮帮孩子

代码一看就不靠谱啊,这种双循环就说不清楚要干啥,循环内的交换,进行nums[j]和nums[i+1]的交换,感觉也是莫名奇妙啊
你到底要实现什么功能啊
方法是:从第二个元素开始,重复与前一个元素比较是否相等,如果不等,则前一个元素从数组的第0个元素开始填入;如果相等,则继续向后比较,直到出现不等为止。另外最后一个元素必然要保留

int remove(int *nums,int numsSize)
{
    if(numsSize <= 1)
        return numsSize;
    int i=0;
    int count = 0;
    for(i=1;i<numsSize;i++)
    {
           if(nums[i] != nums[i-1])
           {
                  nums[count++] = nums[i-1];
           }
    }
    nums[count++] = nums[numsSize-1];
    return count;
}

你比较的是num[i]和num[j],怎么交换的是num[i+1]和num[j]

你题目的解答代码如下:(如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮)

#include <stdio.h>
int removeDuplicates(int *nums, int numsSize)
{
    if (numsSize<2)
        return numsSize;
    int i,len=0;
    for(i=1; i<numsSize; i++){
        if(nums[i]!=nums[len]){
            nums[++len] = nums[i];
        }
    }
    return len+1;
}
int main()
{
    int a[10] = {1,1,2,2,2,5,6,6,6,8};
    int len = removeDuplicates(a,10);
    printf("len=%d\n", len);
    for(int i=0;i<len;i++)
        printf("%d ", a[i]);
    return 0;
}

img