编写一个 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