在一下午被力扣严重打击之后,写写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; }