题目链接:
力扣https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/
解题思路:
代码实现:
int removeDuplicates(int* nums, int numsSize)
{
int up = 1; //注意这里开头是1
int down = 0;
while (up < numsSize)
{
if (nums[up] != nums[down])
{
//up++;
down++;//必需先对down进行++,才能保证下一行代码的等于
nums[down] = nums[up];
up++;
}
else
{
up++;
//numsSize[down] = numsSize[up];
//down++;
}
}
return down + 1;
}
思路讲解:
当一开始的相邻俩个位置的数据不相同时,down++,即向前移动一个位置,此时down 与 up 指向同一位置,但是因为一开始俩个数据的不同,所以up++ 要接着去寻找下一个元素,否则达不到去重的目的,
假设在找到俩个元素之前已经执行过 if 语句的第一部分代码,所以程序一定在up 与 down 位置不是指在同一位置上的
重要的是题目中所给的数组是升序排列的,所以如果有俩个元素相同,则一定是相邻位置



