解题思路:
简单的题目,用map来存储数字-出现次数的序列,每次读入先判断是否存在这个数。最后遍历map容器找到出现次数大于等于(n+1)/2的整数并输出。
参考代码:
#include <iostream>
#include <map>
#include <vector>
#include <utility>
using namespace std;
map<int, int> m;
int n;
int main(int argc, const char * argv[]) {
while (cin>>n) {
int num=(n+1)/2;
m.clear();
while(n--){
int x;cin>>x;
if(m.find(x)==m.end())m[x]=1;
else m[x]++;}
for (map<int, int>::iterator it=m.begin(); it!=m.end(); it++) {
if(it->second>=num)cout<<it->first<<endl;
}
}
return 0;
}