王道 数据结构 p18 第13题
#include<iostream>
using namespace std;
//法一 最优解 题目“设计一个在时间上尽可能高效的算法”
// 即暗示可以用空间换时间,一般用O(n)的空间复杂度 即一个长度为n的一维数据
int noFindMin(int A[],int n){
int B[n],i=0;
for(i=0;i<n;i++)
{
B[i]=0;//必须初始化B数组
}
for(i=0;i<n;i++)
{
if(A[i]>0&&A[i]<=n)
B[A[i]-1]=1;
}
for(i=0;i<n;i++)
{
if(B[i]==0)
break;
}
return i+1;
}
//时间复杂度O(n),空间复杂度O(n)
int main(){
int A[]={0,5,5,3,5,7,5,5};
int B[]={1,2,3,4,5,6,7,8};
cout<<"数组A最小未出现的整数是"<<noFindMin(A,8)<<endl;
cout<<"数组B最小未出现的整数是"<<noFindMin(B,8);
}