AcWing 1637. 漏掉的数字
原题链接
简单
作者:
eveer
,
2021-08-28 12:09:46
,
所有人可见
,
阅读 284
#include<bits/stdc++.h>
using namespace std;
vector<int>res;//用于存储输入的数据
int main()
{
int n;
scanf("%d",&n);
while(n--)
{
int x;
scanf("%d",&x);
if(x>=1)//因为我们要找的是最小的正整数,所以这里要大于等于1
res.push_back(x);//存储数值
}
sort(res.begin(),res.end());//按照从小到大排序
int start=1;//从一开始作为下界进行遍历
if(res.size()==0)//表示输入的全是小于等于0的数字
printf("%d",1);
else
{
bool flag=false;//记录是否已经有结果输出
for(int i=0;i<res.size();i++)//将每一个数字作为上界
{
if(start<res[i])//如果我的下界小于res[i],说明我们的下界就i是我们要找的最小正整数
{
printf("%d",start);
flag=true;
break;
}
else if(start>=res[i])//说明我们的下界就不是start了,那么我们就需要从res[i]+1开始,重新寻找
start=res[i]+1;
}
if(flag==false)//表示之前没有结果输出
printf("%d",start);
}
return 0;
}