1122 找奇葩 - PAT (Basic Level) Practice (中文) (pintia.cn)
开数组不开数组都可以:
开数组
#include<iostream>
#include<map>
using namespace std;
const int N=1e4+10;
int a[N];
map<int,int>m;
int main()
{
int n=0;cin>>n;
for(int i=-0;i<n;i++)
{
cin>>a[i];
m[a[i]]++;
}
int s;
for(auto& it: m)
{
if(it.first%2==1)
{
if(it.second%2==1)
{
cout<<it.first;
break;
}
}
}
return 0;
}
不开数组
#include<iostream>
#include<map>
using namespace std;
int main()
{
int n = 0; cin >> n;
map<int, int>m;
for (int i = 0; i < n; i++)
{
int temp; cin >> temp;
m[temp]++;
}
for (auto& it : m)
{
if (it.first % 2)
{
if (it.second % 2)
{
cout << it.first;
break;
}
}
}
return 0;
}
如果不用map用数组哈希的话这道题数组哈希要大一点才能过:
#include<bits/stdc++.h>
using namespace std;
int m[100005];
int a[10005];
int main()
{
int temp;
int n;cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
m[a[i]]++;
}
for(int i=0;i<n;i++)
{
if(a[i]%2==1)
{
if(m[a[i]]%2==1)
{
cout<<a[i];
break;
}
}
}
return 0;
}