删除有数组中的重复项
题目
第一种:以空间换时间
但其空间复杂度为O(N),并不符合题目的要求,所以只是把思路捋顺一下,具体代码就不实现了
第二种:运用三指针的形式
基本思路捋顺后,代码就可以轻而易举地实现,但要注意的是,其中要充分考虑各个地方可能出现的越界问题。
int removeDuplicates(int* nums, int numsSize){
if(numsSize == 0)
{
return 0;//解决倒二的越界风险
}
int dst = 0;
int cur = 0,next = 1;
while(next < numsSize)
{
if(nums[cur] == nums[next])
{
while(next < numsSize && nums[cur] == nums[next])
{//next判断防止越界
next++;
}
nums[dst] = nums[cur];
dst++;
cur = next;
++next;
}
else
{
nums[dst++] = nums[cur++];
next++;
}
}
if(cur < numsSize)
{
nums[dst++] = nums[cur];
}
return dst;
}
还有,像谋克上的接口型OJ题,如果出现问题,可以通过以下的
步骤进行调试。