码迷,mamicode.com
首页 > 其他好文 > 详细

找出1-N中missing的数

时间:2014-09-16 23:19:31      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:blog   io   for   div   log   c   时间   size   r   

数组a[n-1]里存有1到n的所有数,除了一个数removed,找出这个missing的数。

#include <stdio.h>
#include <stdlib.h>
//数组a[n-1]里存有1到n的所有数,除了一个数removed,找出这个missing的数。
//容易发生溢出  时间复杂度O(N),空间复杂度O(1)
int missing0(int a[],int n)
{
    int sum=(n+1)*n/2;
    int i;
    for(i=0;i<n-1;i++){
        sum-=a[i];
    }
    return sum;
}

//时间复杂度O(N) 空间复杂度O(N)
int missing1(int a[],int n)
{
    int missing=0;
    int b[n];
    int i;
    memset(b, 0, sizeof(b));
    for(i=0;i<n-1;i++)
    {
        b[a[i]-1]=1;
    }
    for(i=0;i<n;i++)
    {
        if(b[i]==0){
            missing=i+1;break;
        }
    }
    return missing;
}
int main()
{

    int a[8]={1,4,7,9,8,2,3,5};
    printf("missing0=%d\n",missing0(a,9));
    printf("missing1=%d\n",missing1(a,9));
    return 0;
}

  

找出1-N中missing的数

标签:blog   io   for   div   log   c   时间   size   r   

原文地址:http://www.cnblogs.com/forsta/p/3975918.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!