編寫一個 C++ 程式,在給定的整數陣列中找到出現頻率最高的元素。
假設我們有一個大小為 N 的整數陣列。任務是在給定的整數陣列中找到出現頻率最高的元素。例如,
輸入-1 −
N = 8
A[ ] = {1,2,4,3,3,1,1,5}輸出 −
1
解釋 − 在給定的整數陣列中,出現次數最多的數字是“1”。因此,輸出為“1”。
輸入-2 −
N = 6
A[ ] = {1,4,4,4,1,1}輸出-a −
1
輸出-b −
4
解釋:在給定的整數陣列中,出現次數最多的數字是“1”和“4”。因此,我們可以返回其中任何一個作為輸出。
解決此問題的方法
給定的陣列包含多個整數,我們需要在其中找到陣列中出現頻率最高的元素。為了線上性時間 O(n) 和線性空間 O(n) 內解決此問題,我們可以使用雜湊對映的方法。
在這種方法中,我們將建立一個無序對映(STL 庫),它包含鍵值對,其中鍵將是元素,值將是元素出現的次數。在遍歷對映時,我們將找到數字的最大出現次數,並將該數字作為輸出返回。
輸入大小為 N 的陣列。
一個整數函式 maxOccurrence(int A[], int size) 以陣列及其大小作為輸入,並返回頻率最高的數字。
透過將鍵作為元素,值作為其頻率來建立陣列所有元素的雜湊對映。
迭代對映並檢查是否有任何元素具有最高頻率,然後將結果作為數字返回。否則,如果陣列中不存在任何數字,則返回“-1”。
示例
#include<bits/stdc++.h>
using namespace std;
int maxOccurrence(int A[], int size){
int mxcount=0;
int res=-1;
unordered_map<int,int>mp;
for(int i=0;i<size;i++){
mp[A[i]]++;
}
for(auto x:mp){
if(x.second>mxcount){
res= x.first;
mxcount=x.second;
}
}
return res;
}
int main(){
int N=6;
int A[N]= {1,4,4,4,2,1};
int ans= maxOccurrence(A,N);
cout<<ans<<endl;
return 0;
}輸出
如果我們執行以上程式碼,它將列印輸出為:
4
4 的頻率為 3,這是給定陣列中所有其他數字中的最大頻率。
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP