目录
26. 删除有序数组中的重复项
思路
总结思路:
创建一个走的快的(fast),用来定位和之前的数不重复的数
再创建一个走的慢的(slow),用来放fast指向的那个不重复的数
本题要求返回删除之后数组的元素个数,返回slow
因为最开始:s1ow=1,
那slow++的次数就是新数组元素个数,
(用slow-1这种写法在循环里也能防止越界)
代码
int removeDuplicates(int* nums, int numsSize)
{
int fast = 1;
int slow = 1;
while(fast < numsSize)
{
if(nums[fast] == nums[slow - 1])
{
fast++;
}
else
{
nums[slow] = nums[fast];
slow++;
fast++;
}
}
return slow;
}