一,具体思路
利用双指针方法解决;
申请两个变量,p=0,q=1;
p指向第一个数,q指向第二个数;
当p指向的数等于q指向的数,q++;
当p指向的数不等于q指向的数
令q指向的数=p+1;此时p++,q++;
循环直到p<数组长度
二,代码实现
int removeDuplicates(int* nums, int numsSize){ if(nums==NULL||numsSize==0) //判断数组地址不为空,并且数组规格不为零 return 0; int p=0; int q=1; while(p<numsSize) { if(nums[p]!=nums[q]) //如果p和q指向的元素不相等,将q指向的元素指到p+1,此时相等的元素留下,p的元素也会留下,构成新数组 { nums[p+1]=nums[q]; p++; } q++; } return p+1; }