我需要编写一个应用程序来确定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都是有效的解决方案。
思想?
答案 0 :(得分:5)
有几种方法可以做到这一点。一种是对数组进行排序,以便您可以一次计算所有类似的值。另一种是使用关联数组,a.k.a。一个字典,其中A的值是键,频率是与键相关的值。
答案 1 :(得分:3)
我会创建一个map<int,int>
来计算每个元素的频率。然后使用std::max_element
和自定义函数,该函数按值比较地图的对元素。然后我只需在数组上使用std::find
来查找第一个匹配项。