因爲開始以爲是沒排好序的,所以就寫了這個循環表示在每次確定新的沒有重複數字的範圍,然後依次和當前元素進行比較
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 ;
}
剛開始寫,希望各位理解