用 C++ 编写一个程序,找出给定整数数组中出现频率最高的元素
假设我们有一个大小为 N 的整数数组。任务是找到给定整数数组中出现频率最高的元素。例如,
输入 1 -
N = 8A[ ] = {1,2,4,3,3,1,1,5}
输出-
1
说明- 在给定的整数数组中,出现最多的数字是“1”。因此输出为'1'。
输入 2 -
N = 6A[ ] = {1,4,4,4,1,1}
输出-a -
1
输出-b -
4
说明:在给定的整数数组中,出现最多的数字是“1”和“4”。因此,我们可以将输出返回给其中任何一个。
解决这个问题的方法
给定的数组包含多个整数,我们必须在其中找到数组中出现频率最高的元素。为了在线性时间O(n)和线性空间中解决这个问题O(n),我们可以使用哈希图的方法。
在这种方法中,我们将创建一个无序map(STL Library)的键值对组成,其中键是一个元素,值是元素的出现。在遍历映射时,我们将找到该数字的最大出现次数并将该数字作为输出返回。
输入一个大小为 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,这是给定数组中所有其他数字的最大频率。
以上是 用 C++ 编写一个程序,找出给定整数数组中出现频率最高的元素 的全部内容, 来源链接: utcz.com/z/350518.html