题意:从所给的一串数字里面,从中选出最小的不在序列中的正数,比如:1,2,3,5,6,7。此数就是4
解题思路:使用map集合,把输入每个数,把对应的键值即该数出现的次数加1,遍历map,从1开始,看该数字出现次数是否为0,为0则表明该数丢失,直接打印返回。
map首先由两个优点:
1.map集合直接保存每个数字的出现的个数,键为该数,值为出现的次数;
2.遍历的时候从最小的数字开始查找键值,快速高效
代码:
#include<iostream>
#include<map>
using namespace std;
int main() {
map<int, int> m;
int n = 0,num = 0;
cin >> n;
for (int i = 0,tem = 0; i < n; i++) {
cin >> tem;
m[tem]++;
}
while (++num) {
if (m[num] == 0)break;
}
cout << num << endl;
system("pause");
return 0;
}