主元素有关问题
主元素问题
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; }