可以证明满足中间数定义的数一定是位于整个有序序列中间位置的数。因此,只要先将输入序列排序然后选取中间位置的值接着根据定义验证即可。
具体代码如下:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int n;
cin >> n;
vector<int> v;
for(int i = 0; i < n; i++)
{
int t;
cin >> t;
v.push_back(t);
}
sort(v.begin(), v.end());
int mid = n / 2;
int small = 0, big = 0; //用于验证结果
for(auto e : v)
{
if(e < v[mid]) small++;
else if(e>v[mid]) big++;
}
int ans = (big == small) ? v[mid] : -1;
cout << ans;
return 0;
}