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
寻找在给出的列表中未出现的最小的正整数,先将给出的数进行排序,然后依次遍历排序好的数组中的每个数,如果与之前最小的正整数的差值不是1,输出相应的数字即可
满分代码如下:
#include<bits/stdc++.h>
using namespace std;
const int N=100005;
int p[N];
int n;
int main(){
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&p[i]);
}
sort(p,p+n);
int first=0;
for(int i=0;i<n;i++){
if(p[i]<=0) continue;
if((p[i]-first)>1){
printf("%d\n",first+1);
return 0;
}else{
first=p[i];
}
}
printf("%d\n",first+1);
return 0;
}