题目要求:(力扣)
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用额外空间的条件下完成。
思路:遍历数值,用指针变量改变。
若要删除重复,可以用左右两个变量遍历,如果两个所代表的数组元素值相等,那让左边的值不动,右边的指针向右移动一位。若两个所代表的数组元素值不相等,先给左边的指针变量赋值,然后向右移动一位,继续循环比较。
程序设计:
int removeDuplicates (int *nums, int numsSize)
{
int*left=nums,int*right=nums+1; //nums为数组名,代表数组首元素地址
int i=0,s=1;
if(numsSize==0) //如果数组的长度为0,即为空数组,返回0
return 0;
while(i;i<numsSize-1;i++)
{
if(*left!=*(right+i))
{
*(++left)=*(right+i);
s++;
}
return s;
}