Given N integers, you are supposed to find the smallest positive integer that is NOT in the given list.
Input Specification:
Each input file contains one test case. For each case, the first line gives a positive integer N (≤105). Then N integers are given in the next line, separated by spaces. All the numbers are in the range of int.
Output Specification:
Print in a line the smallest positive integer that is missing from the input list.
Sample Input:
10
5 -25 9 6 1 3 4 2 5 17
Sample Output:
7
只需要排序处理下就好,注意负数和重复的元素不需要加入vector。
代码如下:
#include <cstdio>
#include <algorithm>
#include <iostream>
#include <cstring>
#include <vector>
using namespace std;
const int maxn=1e5+5;
vector<int>v;
int n;
int vis[maxn];
int main()
{
memset (vis,0,sizeof(vis));
scanf("%d",&n);
while (n--)
{
int x;
scanf("%d",&x);
if(x>0&&x<=1e5&&!vis[x])
v.push_back(x),vis[x]=1;
}
sort(v.begin(),v.end());
int flag=0;
for (int i=0;i<v.size();i++)
{
if(v[i]!=i+1)
{
flag=1;
printf("%d\n",i+1);
break;
}
}
if(flag==0)
{
printf("%d\n",v.size()+1);
}
return 0;
}