给定一个排序数组,要求在原地删除重复出现的元素,使得每个元素只出现一次,
返回移除后数组的新长度。
要求:不能使用额外的数组空间,必须在原地修改**输入数组**,并在使用O(1)
额外空间的条件下完成。
1.
int removeDuplicates(int *nums,int numsSize)
{
assert(nums);
if (numsSize< 2)
{
return numsSize;
}
int dst = 0, src = 1;
while (src < numsSize)
{
if (nums[dst] != nums[src])
{
dst++;
nums[dst] = nums[src];
src++;
}
else
{
src++;
}
}
return dst + 1;
}
2.
int removeDuplicates(int *nums, int numsSize)
{
assert(nums);
if(numsSize<2)
{
return numsSize;
}
int i = 0;
int j = 0;
while (i<numsSize)
{
while (nums[i] == nums[i + 1])
{
i++;
}
nums[j++] = nums[i++];
}
return j;
}