#include<stdio.h>
#include<iostream>
int removeDuplicates(int* nums, int numsSize) {
int count = 0, i = 0, j = 0,x=0;
for(i=0;i<numsSize-x;i++)
{
count = 0;
j = i + 1;
while (nums[j]!=NULL)
{
if (nums[j] == nums[i])
{
count++;
}
else
{
nums[j - count] = nums[j];
}
j++;
}
x += count;
}
return numsSize - x;
}
using namespace std;
int main()
{
int a[10] = { 0,0,1,1,1,2,2,3,3,4 };
int x;
x = removeDuplicates(a, 10);
printf("%d", x);
return 0;
}
我的想法是遍历(数组元素个数- 所有元素的总重复次数)次,
每次 i 为当前元素,j 由 i+1 开始,在i后面寻找是否有与i相同的元素,如果有使得计数元素 count++,否则使 a [j-count] =a [j] 实现删除所有数组重复元素的效果。
那么为什么我这样写不行呢