在一下午被力扣严重打击之后,写写pat。但是这题还是很操蛋的,我一直调试都是19分。最后一个的res在cout的时候才是有问题的。
这里特别注意:一定要有printf();我用了那个叫
ios::sync_with_stdio(false);
结果还是那一个测试点有问题。
题目大概意思:
找到第一个只出现一次的数字。还是可以用哈希散列。
1.输入的时候,记录每一个数字的位置,然后统计每一个字符的出现的次数。
2.然后我们在第二次循环的时候,我对数字进行筛选,筛选出只出现一次的数字。
这里我们不妨举一个例子:算是对这个题解理解更加深刻的例子叭:
7 5 3 31 5 58 58 5
这里我们发现只出现一次的数字有 5 和 3
但是5和3还是数组中还是按照顺序出现的,所以我们放到哈希表里面继续直接去按照数组的顺序查询,就是可以找到一个出现第一次的数字啦
#include <iostream>
#include <string>
using namespace std;
const int N=100001;
int f[10001]={0};
int a[N];
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
//cin>>a[i];
f[a[i]]++;
}
int res=-1;
for(int i=0;i<n;i++){
if(f[a[i]]==1){
res=a[i];
break;
}
}
if(res==-1) cout<<"None"<<endl;
//卧槽,这里一定要printf();不然测试点过不去,要不然你就加ios::sync_with_stdio(false)
else printf("%d\n",res);
return 0;
}