PAT a1144

it2022-05-05  99

目的: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就好用多了。


最新回复(0)