java - 计算数组中数字的频率

标签 java iteration frequency

我有一个数组,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/

相关文章:

java - 对如何用Java编写接口(interface)感到困惑

swift - 如何在异步迭代中设置DispatchGroup?

java - 如何使用 Goertzel 算法检测频率

Java Selenium Chrome 驱动程序 - 禁用图像加载

java - 如何定义一个以透明方式拦截所有服务的全局 JAX-WS MessageHandler?

java - 遍历字符串中所有字符的最快方法

c++如何在结构 vector 的一个字段上创建迭代器

python - 查找单词的频率并绘制结果

c - 表示给定 LSB/V 的正弦波

java - 删除证书并在 keystore 中插入新证书并出现错误 SSL 版本不匹配