标签: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;
}
标签:blog io for div log c 时间 size r
原文地址:http://www.cnblogs.com/forsta/p/3975918.html