408 2018算法題目


一,算法思想

從a[0]開始遍歷a,若0<a[i]<=n,則另B[A[i]-1]=1,否則不做操作,對a遍歷完了后再去遍歷B,若能找到第一個滿足B[i]=0的下標i,返回i+1即為結果

代碼實現:

int findmissmin(int a[],int n)
{
    int i,*b;
    b=(int *)malloc(sizeof(int)*n);//標記數組建立
    memset(b,0,sizeof(int)*n);//標記數組全為0
    for(i=0;i<n;++i)
        if(a[i]>0&&a[i]<=n)
        {
            b[a[i]-1]=1;//若a[i]介於1-n之間,則標記數組b
        }

    for(i=0;i<n;++i)
    {
        if(b[i]==0)break;

    }
    return i+1;

}

  時間復雜度o(n),空間復雜度o(n)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM