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

更新于:2021-10-25

5000+ 次浏览量

启动你的 事业

通过完成课程获得认证

开始
广告