首先需要理解题目的意思,也就是需要输出最小的未出现的正整数。
强调一遍,写代码之前必须先分析整个过程以及答案的情况。
由于N<=10E5,可知最小的未出现的必然在[1,100001]中(如果不在其中,则代表这100001个数字都出现,显然与最多100000相矛盾),所以可以利用数组直接标记其中某个数是否出现,最后遍历即可。
#include<stdio.h>
int main(){
int i,n,t,data[100002]={0};//初始为0表示未出现
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&t);
if(t>0&&t<100002)//其他情况直接舍去
data[t]=1;
}
for(i=1;i<100002;i++){
if(data[i]==0){
printf("%d",i);
break;
}
}
return 0;
}