C++ 数组中出现频率最高的元素
已知一个数组,需要从中找出出现频率最高的元素。下面来看一个示例。
输入
arr = [1, 2, 3, 3, 2, 2, 1, 1, 2, 3, 4]
输出
2
在上述数组中,2 出现了 4 次,比数组中其他元素的出现频率最高。
算法 - 1
初始化数组。
初始化一个映射来存储每个元素的频率。
统计每个元素的频率并存储在映射中。
遍历映射并找出频率最高的元素。
- 返回该元素。
算法 - 2
- 初始化数组。
- 对给定的数组进行排序。
- 维护用于最大计数、结果和当前元素计数的变量。
- 通过遍历数组找出最大计数元素。
- 相同的元素并排排列。
- 返回结果。
实现
以下是用 C++ 实现上述算法的代码
#include <bits/stdc++.h>
using namespace std;
int getMostFrequentNumber(int arr[], int n) {
unordered_map<int, int> elements;
for (int i = 0; i < n; i++) {
elements[arr[i]]++;
}
int maxCount = 0, res = -1;
for (auto i : elements) {
if (maxCount < i.second) {
res = i.first;
maxCount = i.second;
}
}
return res;
}
int main() {
int arr[] = { 1, 2, 3, 3, 2, 2, 1, 1, 2, 3, 4 };
int n = 11;
cout << getMostFrequentNumber(arr, n) << endl;
return 0;
}输出
如果运行上述代码,则将得到以下结果。
2
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP