首页 > 代码库 > 找出1-N中missing的数

找出1-N中missing的数

数组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的数