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
广告