Leetcode-26題

     因爲開始以爲是沒排好序的,所以就寫了這個循環表示在每次確定新的沒有重複數字的範圍,然後依次和當前元素進行比較

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 ; 
 } 


剛開始寫,希望各位理解微笑

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章