题目链接
知识点:map映射
思路
构建数字和其出现次数间的映射,读取从1开始第一个出现次数为0的数字
代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,t;
scanf("%d",&n);
map<int,int> mp;
for(int i=0;i<n;i++){
scanf("%d",&t);
mp[t]++;
}
//for(int i=0;i<20;i++) printf("%d ",mp[i]);
int j=1;
while(j++){
if(mp[j]==0) break;
}
printf("%d",j);
}
卡住的知识点
1、j的初值设置错了,j++是先把当前j进行循环再加1,因此初值应该设为1
2、开始没想到映射,一是当时状态不好脑子卡住了,主要是映射的思想不熟练,对这种问题没有形成思想的条件反射。