因为开始以为是没排好序的,所以就写了这个循环表示在每次确定新的没有重复数字的范围,然后依次和当前元素进行比较
int removeDuplicates(int* nums, int numsSize)
{
int len=numsSize;
int i,j,shortlen=0;
for(int i=0;i<numsSize;i++)
{
j=0;
while(j<shortlen)//因为开始以为是没排好序的,所以就写了这个循环表示在每次确定新的没有重复数字的范围,然后依次和当前元素进行比较
{
if(nums[j]==nums[i])
{
break;
}
else
j++;
}
if(j==shortlen) //表示无重复
{
nums[shortlen]=nums[i];
shortlen++;
}
}
return shortlen;
}
因为不符合要求,当时在leetcode上搞了好久,最后才得知是我的问题,好心累,呜呜;
其实排好序后代码就几行:
int removeDuplicates(int* nums, int numsSize)
{
int i, length=0; //下标 i和 length;
if(numsSize <= 1) //如果数组长度小于等于1,直接返回;
return numsSize;
for(i=1; i<numsSize; i++)
{
if(nums[length] != nums[i])
{
length ++; //len先自增,因为数组长度已经大于1了;
nums[length] = nums[i]; //将 i位置数赋给length位置;
}
}
return length ;
}
刚开始写,希望各位理解