lower_bound,high_bound
样例
#include<bits/stdc++.h>
using namespace std;
const int N=1005;
int a[N],n;
int find_lower(int x)
{
int l=0,h=n-1;//左闭右闭
while(l<h){
int mid=l+h>>1;
if(a[mid]>=x) h=mid;
else l=mid+1;
}
return l;
}
int find_higher(int x)
{
int l=0,h=n-1;//左闭右闭
while(l<h){
int mid=l+h+1>>1;
if(a[mid]<=x) l=mid;
else h=mid-1;
}
return h;
}
int main()
{
cin>>n;
for(int i=0;i<n;++i)
scanf("%d",&a[i]);
sort(a,a+n);
int x=a[n/2];
int p1=find_lower(x),p2=find_higher(x);
if(p1==(n-p2-1)) cout<<x;
else cout<<-1;
}
算法1
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla