题目描述
给出一个含有 n(0<n≤1000)个整数的数组,请找出其中出现次数超过一半的数。数组中的数大于 −50 且小于 50。
输入描述
第一行包含一个整数 n,表示数组大小;
第二行包含 n 个整数,分别是数组中的每个元素,相邻两个元素之间用单个空格隔开。
输出描述
如果存在这样的数,输出这个数;否则输出 no。
样例 1
样例输入 1
3
1 2 2
样例输出 1
2
代码:
#include <bits/stdc++.h>
using namespace std;
int n, cnt, a;
map <int, int> t;
int init() {
for(int i = -50; i <= 50; i++) t[i] = 0;
}
int main() {
init();
cin >> n;
for(int i = 1; i <= n; i++) {
cin >> a;
t[a]++;
}
cnt = n / 2;
for(int i = -50; i <= 50; i++)
if(t[i] > cnt) return cout << i, 0;
cout << "no";
return 0;
}
TLE 求助!