确定数组中最常用的值

时间:2011-08-09 21:17:15

标签: c++

我需要编写一个应用程序来确定C ++中数组中最常出现的值及其在数组中的位置。

例如,如果我有一个数组A

A[0] = 3    A[1] = 4    A[2] =  3
A[3] = 2    A[4] = 3    A[5] = -1
A[6] = 3    A[7] = 3

我必须确定3是最常用的数字,并且我需要返回它出现的数组中的位置。任何立场都没问题。例如,0,2,4,6,7都是有效的解决方案。

思想?

2 个答案:

答案 0 :(得分:5)

有几种方法可以做到这一点。一种是对数组进行排序,以便您可以一次计算所有类似的值。另一种是使用关联数组,a.k.a。一个字典,其中A的值是键,频率是与键相关的值。

答案 1 :(得分:3)

我会创建一个map<int,int>来计算每个元素的频率。然后使用std::max_element和自定义函数,该函数按值比较地图的对元素。然后我只需在数组上使用std::find来查找第一个匹配项。