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+ 次瀏覽量

啟動你的 事業

透過完成課程獲得認證

開始
廣告
© . All rights reserved.