给你一个有序数组nums,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度
int removeDuplicates(int* nums, int numsSize)
{
if(numsSize==0)
{
return 0;
}
int fast=1;
int slow=0;
for(;fast<numsSize;fast++)
{
if(nums[fast]==nums[slow])
{
;
}
else
{
slow++;
nums[slow]=nums[fast];
}
}
return slow+1;
}
使用双指针的方式来写这道题,当函数接收一个数组时,定义一个快指针一个慢指针,当两个指针所指向的数相等时快指针向右移动,反之则慢指针向右移动,将快指针指向的值赋给慢指针,直到快指针运动到数组最后一个元素时终止。最后返回slow+1是因为slow是从下标为0开始的,数组长度就为slow+1
、
下篇只出现一次的数字