用 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),我们可以使用哈希图的方法。

在这种方法中,我们将创建一个无序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

回到顶部