Leetcode—删除有序数组的重复项
题目描述
思路
思路:定义两个指针/变量,dst指向第一个位置,scr指向下一个位置,判断scr和dst位置的数据。
case1:相等,scr++;
case2: 不相等,dst++,nums[dst]=nums[scr],scr++;
画图解释
定义两个指针/变量,dst指向第一个位置,scr指向下一个位置,判断scr和dst位置的数据。
不相等,dst++,nums[dst]=nums[scr],scr++;
相等,scr++;
不相等,dst++,nums[dst]=nums[scr],scr++;
此时src跳出了循环,dst指向的是数组下标为2的位置,而我们最终需要返回dst+1。
完整代码
int removeDuplicates(int* nums, int numsSize)
{
int dst=0,src=dst+1;
while(src<numsSize)
{
//nums[dst] nums[src]
//相同(重复) src++
//不相同,dst++ , 赋值,src++
if(nums[src]!=nums[dst]&&++dst!=src)
{
nums[dst]=nums[src];
}
src++;
}
return dst+1;
}