删除排序数组中的重复项
问题描述:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
int removeDuplicates(int* nums, int numsSize) {
int i,j=0;
if(numsSize==0)
return j;
printf("[%d",nums[j]);
for(i=1;i<numsSize;i++)
{
if(nums[i]!=nums[j])
{
nums[++j]=nums[i];
printf(",%d",nums[i]);
}
}
printf("]");
return j+1;
}
删除排序数组中的重复项 II
问题描述:
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
int removeDuplicates(int* nums, int numsSize) {
int i,j=0,k=0;
int temp;
if(!numsSize)
return 0;
temp=nums[j];
for(i=0;i<numsSize;i++)
{
if(nums[i]==temp)
{
k++;
if(k<=2)
{
nums[j]=nums[i];
j++;
}
}
else
{
nums[j]=nums[i];
temp=nums[j];
j++;
k=1;
}
}
return j;
}