方法一 桶排序
#include<iostream>
using namespace std;
int main(){
int a[100],b[100]={0},i=0;
while(1){
int t;
cin>>t;
if(!t) break;
a[i]=t;
b[a[i]]++;
i++;
}
int flag=0;
for(int j=0;j<i;j++){
if(b[a[j]]>i/2){
cout<<a[j];
break;
}
else flag++;
}
if(flag==i) cout<<"-1";
return 0;
}
方法二 利用数学进行分析优化
int ans(int A[],int n){
int i,c,count=1;
c=A[0];
for(int i=1;i<n;i++){
if(A[i]==c)
count++;
else
if(count>0)
count--;
else{
c=A[i];
count=1;
}
}
count=0;
for(int i=0;i<n;i++){
if(A[i]==c)count++;
}
if(count>n/2) return c;
else return -1;
}