重要思想:
画图!! 自己体会 ——————
情况1:
情况2:
AC代码:
int removeDuplicates(int* nums, int numsSize){
//三指针
if(numsSize == 0)
return 0;
int i = 0,j = 1;
int dst = 0;
while(j < numsSize)
{
if(nums[i] == nums[j])
{
++j;
}
else if(nums[i] != nums[j])
{
nums[dst] = nums[i];
++dst;
i = j;
++j;
}
}
nums[dst] = nums[i];
++dst;
return dst;
}
思路2:双指针
int removeDuplicates(int* nums, int numsSize){
int dst=0,src=1;
int j=0;
while(src < numsSize)
{
if(nums[src] == nums[dst])
{
j = src;
while(j < numsSize)
{
nums[j - 1] = nums[j];
j++;
}
numsSize--;
}
else
{
dst++;
src++;
}
}
return numsSize;
}