思路
这类题主要考察的是记录要求数据的能力。
一般这类题可以运用散列方法来轻松解决。
散列是一种很好用的数据结构,考CCF的兄弟一定要了解一下!!!
代码如下:
#include <iostream>
#include <algorithm>
using namespace std;
int main(int argc, char** argv) {
int n;
cin>>n;
int a[1010]={0};//创建散列
int k;
bool flag=true;
for(int i=0;i<n;i++)
{
cin>>k;
a[k]++;//记录数据个数
}
for(int i=0;i<=1000;i++)
{
int left=0,right=0;//某数左边元素个数右边元素个数
if(a[i]==0)//代表数组中没有这个数可直接跳过
{
continue;
}
else if(a[i]!=0)
{
for(int j=0;j<i;j++)
{
if(a[j]!=0)
{
left+=a[j];
}
}
for(int j=i+1;j<=1000;j++)
{
if(a[j]!=0)
{
right+=a[j];
}
}
}
if(left==right&&a[i]!=0)
{
cout<<i<<endl;
flag=false;
break;
}
}
if(flag)
{
cout<<-1;
}
return 0;
}
有什么问题可以留在评论区!!!