在只使用O(1)的的额外空间的情况下在原地修改输入数组.
例如:
给定nums=[0,0,1,1,1,2,2,3,3,4],删去重复的元素,返回长度为5,元素为[0,1,2,3,4];
函数代码实现为:
int removeDuplicates(int* nums, int numsSize) //原地算法
{
int i;
if (nums == NULL || numsSize == 0) return 0;
int index = 0;
for (int i = 1; i < numsSize; i++) {
if (nums[index] != nums[i]) {
index++;
nums[index] = nums[i];
}
}
for (i = 0; i < index+1; i++)
printf("%d", nums[i]);
return index + 1;
}
直接利用指针移动将前面重复的元素占掉,然后在输出时直接输出前面修改过的个体.