目的:N个整数中,找出不属于给出的序列的最小正整数
输入:
N <=100000
N个整数
输出: 这个序列中缺少的最小正整数。
算法:
用set存,如果没有找到元素,那就不存在。
#include<stdio.h>
#include<set>
using namespace std;
const int inf = 1<<30;
const int maxn = 100010;
set<int> a;
int n,cnt = 0;
int main()
{
scanf("%d",&n);
for(int i=0;i<n;i++)
{
int x;
scanf("%d",&x);
if(x>0)
{
a.insert(x);
cnt++;
}
}
for(int i=1;i<=cnt+1;i++)
{
if(a.find(i)==a.end())
{
printf("%d",i);
return 0;
}
}
return 0;
}
反思:用数组不好处理,因为可能有重复的,而用set和map就好用多了。