PAT 1144. The Missing Number (20)

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相等,不等即找到这个没有在输入序列中出现的最小正整数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <set>

int main() {
int n = 0, t = 0, idx = 1;
scanf("%d", &n);
std::set<int> v;
for (int i = 0; i < n; i++) {
scanf("%d", &t);
if (t > 0) v.insert(t);
}

for (auto it = v.begin(); it != v.end(); it++, idx++) {
if (*it != idx) break;
}
printf("%d", idx);
return 0;
}