RT,找数组中出现次数大于一半的数,没有输出0。
具体解法见《编程之美》发帖水王。
http://codeup.cn/problem.php?id=2161 已AC
ps:关于没有主元素的情况,我的想法是存一个数组里然后再遍历一次,暂时没想到不用数组存的方法。。
cpp代码:
#include<iostream>
#define MAXN 10000
using namespace std;
int main(){
int n,i,candidate,cur,ntimes;
int num[MAXN];
while(cin>>n){
ntimes=0;
for(i=0;i<n;i++){
cin>>cur;
num[i]=cur;
if(ntimes==0)candidate=cur;
if(cur==candidate)ntimes++;
else ntimes--;
}
int _count=0;
for (i=0;i<n;i++){
if(candidate==num[i])_count++;
}
if(_count>n/2)cout<<candidate<<endl;
else cout<<0<<endl;
}
return 0;
}