目录
题目叙述
题解
一、暴力
int removeDuplicates(int* nums, int numsSize){
int k=1;
for(int i=0; i<numsSize; i++)
{
for(int j=i+1; j<numsSize; j++)
{
if(nums[i] != nums[j]) //升序数组找到第一个不等于自己的元素
{
nums[k]=nums[j];
k++;
i=j; //再次遍历时,即从下一个不等于自己的元素处开始
continue;
}
}
}
return k;
}
二、双指针法
int removeDuplicates(int* nums, int numsSize){
int slow=0;
for(int fast=0; fast<numsSize; fast++)
{
if(nums[fast]!=nums[slow])
{
nums[++slow] = nums[fast];
}
}
return slow+1; //注意这里返回数组个数,所以 slow 加1
}