有n(不超过100)个绝对值比10000小的整数。请你设计C/C++程序,找出其中最小的没有出现的正整数。 输入格式(2行) 第一行,一个正整数n(代表整数的个数) 第二行,n个整数 输出格式 一行,一个正整数(代表缺失的最小正整数)
时间: 2024-12-16 18:18:28 浏览: 7
为了找到最小的没有出现的正整数,我们可以使用哈希表(C++中称为unordered_set)来存储已知的整数。当遍历输入数组时,如果遇到某个整数不在哈希表中,则它是缺失的,并且就是我们要找的最小正整数。如果所有数字都在哈希表中,那么下一个缺失的就是当前最大整数加一。
以下是C++代码实现思路[^1]:
```cpp
#include <iostream>
#include <unordered_set>
int main() {
int n;
std::cin >> n;
// 哈希表用于存储已知的整数
std::unordered_set<int> knownNumbers;
int input;
for (int i = 0; i < n; ++i) {
std::cin >> input;
if (input <= 0 || input > 10000) { // 忽略超出范围的输入
continue;
}
knownNumbers.insert(input);
}
// 如果所有数字都在1到n范围内,返回n+1
if (knownNumbers.size() == n) {
return *knownNumbers.rbegin() + 1;
} else {
// 返回第一个未出现的正整数
return *knownNumbers.begin();
}
}
```
输出格式为一行,表示缺失的最小正整数。
阅读全文