[力扣_26] 删除排序数组中的重复项
题目入口:点击进入
相关算法:
- 原地算法——时间复杂度O(n),空间复杂度——O(1)
思路和算法:
这题其实在纸上简单画画就可以得出解法,题目要求删除重复出现的元素并且返回删除后的长度,就可以想到快慢指针的思想,初始化两指针全部指向下标为0的元素
- 若元素相等,则快指针前进
- 若元素不相等,则满指针往前走一步然后等于快指针所指的不相等的元素。
图示如下:
代码如下所示:
int removeDuplicates(int* nums, int numsSize){
if(!numsSize) return 0;
int i=0,j=0;
while(j<numsSize)
{
if(nums[i]==nums[j]) j++;
else nums[++i]=nums[j];
}
return i+1;
}