我有一个数组,scores[5][5]
,它充满了测试分数。
我需要找到最常出现的分数并将其返回。
最佳答案
我会简单地创建一个 HashMap<Integer,Integer>
其中第一个整数是分数数组中的值,第二个整数是频率。
然后处理数组填充到hashmap中。如果某个键已经存在,则将计数加一。如果是新 key ,请将其设置为 1。
然后处理 HashMap 以查找出现次数最多的值。
<小时/>一旦我能够访问安装了 Java 的机器,我就打算研究源代码,但是,由于它现在被标记为家庭作业,所以它只是算法(从长远来看,这对你来说无论如何都会更好):
Create empty hashmap freq
For each entry in your array (probably nested loops):
If entry.value is not in freq:
Add entry.value to freq, set its count to zero
Increase count of freq.value
Set max_count to 0
For each item in freq:
If item.count is greater than max_count:
Set max_list to an empty list
Set max_count to item.count
If item.count is equal to max_count:
Append item.value to max_list
If max_count is greater than 0:
Output max_count, max_list
这是我将遵循的基本算法,它由两个顺序循环组成。
第一个只是创建值到计数的映射,以便您稍后可以找到最大计数。
第二个遍历 map 并创建具有最高计数的值的列表。
关于java - 计算数组中数字的频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2741677/