题目描述:
给定一个排序数组,你需要使用原地算法删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须使用原地算法修改输入数组并在使用O(1)额外的条件下完成。
实例:
给定数组 nums = [1,1,2]
函数应该返回的新的长度2,并且原数组nums的前两个元素被修改为1,2。
int removeDuplicates(int * nums, int numSize)
{
if (numSize == 0) return 0;
int count = 1;
for (int i = 0; i < numSize - 1; i++)
{
if (nums[i] != nums[i + 1])
nums[count++] = nums[i + 1];
}
return count;
}
int main()
{
int arr[] = {1,2,2,3,3,5,5};
int count = removeDuplicates(arr, sizeof(arr) / sizeof(arr[0]));
printf("%d\n",count);
for (int i = 0; i < count; i++)
{
printf("%d\t",arr[i]);
}
printf("\n");
system("pause");
return 0;
}