题目描述:
Given N integers, you are supposed to find the smallest positive integer that is NOT in the given list.
输入格式:
Each input file contains one test case. For each case, the first line gives a positive integer N (≤10^5 ). Then N integers are given in the next line, separated by spaces. All the numbers are in the range of int.
输出格式:
Print in a line the smallest positive integer that is missing from the input list.
输入样例:
10
5 -25 9 6 1 3 4 2 5 17
输出样例:
7
题意:
给出n个整数的一个序列,找到最小的没有出现在这个序列中的正整数。
思路:
将序列中的正整数都insert到一个set中,sInt从1开始,如果在set中不存在,就是最小缺失数,否则就+1。
参考代码:
#include <stdio.h>
#include <set>
using namespace std;
set<int> pSeq; //正数序列
int main(){
int n;
scanf("%d", &n);
int num;
for(int i = 0; i < n; i++){
scanf("%d", &num);
if(num > 0){
pSeq.insert(num);
}
}
int sInt = 1; //最小的缺失的整数
while(pSeq.find(sInt) != pSeq.end()){ //能找到
sInt++;
}
printf("%d\n", sInt);
return 0;
}