很简单的一道题,但是最后两个测试案例很蛋疼,改了很久终于ac了
- 最后一个测试案例,显示段错误,初步诊断为数组范围太小,但是开的太大又接受不了,测试发现给的数据可能会很大,因此原判定条件应还有个上限,即<100000
- 倒数第二个测试点 n为100000,并且刚好是1~100000,因此最小缺失数为100001,最后for循环上界改一下就通过了
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int n;
cin>>n;
bool hash[100010]={false};
for(int i=0;i<n;i++)
{
int temp;
scanf("%d",&temp);
if(temp>0&&temp<=100000)//最后一个测试点
hash[temp]=true;
}
for(int i=1;i<=100001;i++)//倒数第二个测试点,丢失数为100001
{
if(hash[i]==false)
{
cout<<i;
break;
}
}
return 0;
}