删除有序数组中的重复项

一,具体思路

利用双指针方法解决;

申请两个变量,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;
}

 

上一篇:Navicat for MySQL 连接问题(权限报错)


下一篇:链表的操作,包括在链表的头,中间,尾增加和删除