编程题:h0048. 算次数
小明想知道在他笔记本上写的 n 个整数中出现次数最多的数是多少,如果有多个数出现次数并列最多,他想知道数最小的那个。
### 输入格式:
第一行,一个正整数 n,1≤n≤10^5
第二行,n 整数 ai(−10^6≤ai≤10^6),表示小明的笔记本上的整数
### 输出格式:
输出一行,包含一个整数,表示答案。
### 输入样例:
in
3
-1 -1 2
### 输出样例:
out
-1
答案:若无答案欢迎评论
因为有负数存在,可以把每个数统计在下标比这个数大的位置,最后找到数组最大数的下标后再减去就是答案了。
#include <iostream>
using namespace std;
int cnt[2000005];
int main() {
int n, x, ans;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> x;
cnt[x + 1000000]++;
}
ans = 0;
for (int i = 0; i <= 2000000; i++) {
if (cnt[i] > cnt[ans]) {
ans = i;
}
}
cout << ans - 1000000 << endl;
return 0;
}
### 输入格式:
第一行,一个正整数 n,1≤n≤10^5
第二行,n 整数 ai(−10^6≤ai≤10^6),表示小明的笔记本上的整数
### 输出格式:
输出一行,包含一个整数,表示答案。
### 输入样例:
in
3
-1 -1 2
### 输出样例:
out
-1
答案:若无答案欢迎评论
因为有负数存在,可以把每个数统计在下标比这个数大的位置,最后找到数组最大数的下标后再减去就是答案了。
#include <iostream>
using namespace std;
int cnt[2000005];
int main() {
int n, x, ans;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> x;
cnt[x + 1000000]++;
}
ans = 0;
for (int i = 0; i <= 2000000; i++) {
if (cnt[i] > cnt[ans]) {
ans = i;
}
}
cout << ans - 1000000 << endl;
return 0;
}