给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。你不需要考虑数组中超出新长度后面的元素。
解:
算法思路:顺序扫描有序数组,用k记录数组中不同元素的个数,边扫描边统计k并将下个不同的元素存放在k位置。
代码如下:
int removeDuplicates(int* nums, int numsSize){
int k=1,j;
if(numsSize==0)return 0;
for(j=1;j<numsSize;j++)
if(nums[j]!=nums[k-1]){
nums[k++]=nums[j];
}
return k;
}