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