题目简介
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素只出现一次 ,返回删除后数组的新长度。
不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
思路分析
创建双指针str1和str2,当str1和str2值相等时,str1向后移动一位,当str1和str2值不相等时,将str2向后移动一位并把str1的值赋值给str2然后将str1向后移动一位
如下图
代码实现
int removeDuplicates(int* nums, int numsSize){
if(numsSize==0)
{
return 0;
}
int str1=0;
int str2=0;
while(str1<numsSize)
{
if(nums[str1]!=nums[str2])
{
str2++;
nums[str2]=nums[str1];
str1++;
}
else
{
str1++;
}
}
return str2+1;
}