题目描述:
给定一个有序的数组,原地删除重复出现的元素,使得每个元素最多出现2次
返回删除后数组的新长度
输入:nums = [1,1,1,2,2,3]
输出:5, nums = [1,1,2,2,3]
题目解析:
双指针法:从第三个元素开始,如果arr[i]和arr[j-2]的元素相同,进行赋值。
void RemoveDuplicates(int *arr,int len)
{
if(len <= 2) return;
//从第三个元素开始
int j = 2; //慢指针
for(int i =2; i<len; ++i)
{
if(arr[j-2] != arr[i])
{
arr[j] = arr[i];
j++;
}
}
}