1. 题目描述
2. 思路分析
用双指针算法,定义两个变量src和dst,一开始让src和dst指向num[ ]数组的第一个元素,再使用if语句判断。
如果nums[src]==nums[dst],就让src指向下一位,即src++。如果nums[src]!=nums[dst]就让dst指向下一位,即dst++,再将src的值赋给nums[dst],赋完值后让src指向下一位,即src++。
最后dst+1就是数组中元素的个数。
流程演示:
3. 代码实现
int removeDuplicates(int* nums, int numsSize) {
int n = numsSize;
int src = 0, dst = 0;
while (src < n)
{
if (nums[src] == nums[dst])
src++;
else
{
dst++;
nums[dst] = nums[src];
src++;
}
}
return dst + 1;
}