1637. 漏掉的数字
原题传送:AcWing 1637. 漏掉的数字
给定 N N N 个整数,请你找出最小的不在给定整数列表中的正整数。
输入格式
第一行包含整数 N N N 。
第二行包含 N N N 个整数,整数之间用空格隔开,所有数字都在int范围内。
输出格式
输出不在给定整数列表中的最小正整数。
数据范围
1 ≤ N ≤ 1 0 5 1 \le N \le 10^5 1≤N≤105
输入样例:
10
5 -25 9 6 1 3 4 2 5 17
输出样例:
7
思路:
哈希表记录出现过的数,然后从1开始枚举正整数,第一个未出现过的数即为答案。
题解:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
unordered_map<int, int> mp;
scanf("%d", &n);
while(n--)
{
int x;
cin >> x;
if(x > 0)
mp[x]++;
}
int cnt = 0;
while(++cnt)
{
if(!mp[cnt])
break;
}
printf("%d\n", cnt);
return 0;
}