回答
我会简单地创建一个HashMap<Integer,Integer>
其中第一个整数是分数数组中的值,第二个是频率。
然后在hashmap中处理数组填充。如果一个密钥已经存在,请将计数加1。如果它是新密钥,请将其设置为1。
然后处理散列图以查找出现次数最多的值。
我要对源代码的工作,一旦我进入到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
这是我将遵循的基本算法,它由两个顺序循环组成。
第一个只是创建一个值到计数的映射,以便您可以稍后查找最大计数。
第二个遍历地图并创建具有最高计数值的列表。
由于得分可能处于有限范围内(例如0..100
),因此您可以使用计数阵列快速完成此操作。基本上,您正在执行counting sort的第一阶段。
所有可能得分的count
开始于0
,则对于每个得分s
,增量count[s]
。一旦处理了所有得分,请扫描count
并查看哪个count[k]
是最高的。
您还可以跟踪计数中最常见的分数。只是这样做:(?出于某种原因)
// init
mostFrequent = 0;
// during increment
count[s]++;
if (count[s] > count[mostFrequent]) {
mostFrequent = s;
}
因为你的分数被安排在一个二维矩阵,可以处理每个分数如下:
int[] count = new int[RANGE]; // valid scores are 0..RANGE-1
mostFrequent = 0;
for (int[] tuplet : scores) {
for (int s : tuplet) {
count[s]++;
if (count[s] > count[mostFrequent]) {
mostFrequent = s;
}
}
}
report(mostFrequent, count[mostFrequent]);
由于这是比算法更多的代码,我不得不说道尔顿没有理由不能获得相当好的成绩。也是可惜的,因为它是解决iter问题的最简单的问题。 – jcolebrand 2010-04-30 03:28:48
或者保持一个指针当前最大的一个。每次创建或更新时,都要比较一下,看看你是否刚刚超过了以前的最大值,如果有,就更换它。 保存另一个通过散列映射。
对于这样的事情,编写代码来模拟在现实生活中你将如何做事。
让我们的模型:
你的[5] [5]数组:这只是一个5列和5行数的网格。
从0,0位置开始 - 读取该位置的值,并启动一个列表(在Java中,一个ArrayList或HashMap),将该数字添加到列表中并给它一个哈希标记(值为1) ,以表明你已经看过一次。
穿过该行,然后左后下行,等等。
你读的每个数字,检查它是否已经在你的列表中。如果是,只需制作另一个散列标记(加1)即可。如果没有,然后将该号码添加到您的列表并给它一个哈希标记。
读完数组后,从头开始查看列表,并通过将手指放在数字上(将数字存储在变量中)来跟踪您看到的散列标记最多的数字。
返回最后一个变量。
- 1. 计算数组中值的频率
- 2. 计算数组中元素的频率
- 3. C - 计算数组中数字的频率
- 4. 计算一个特定值在一个数组中出现的频率
- 5. 使用Python计算数字频率
- 6. 使用函数计算字符(频率)
- 7. 计算字典中的值的频率
- 8. PHP - 数组值的计数频率
- 9. 一种计算数字频率的方法
- 10. Python:计算字典中的频率
- 11. 计算一个数组元素的频率落在一定范围内
- 12. 用JavaScript计算数组中元素的频率
- 13. 计数的字母的频率在一个字符串
- 14. PDA中的计数字母频率
- 15. 计算频率
- 16. Perl字频率计数器
- 17. 跟踪/计数字频率
- 18. 计数字母频率
- 19. 频率计数
- 20. 计算一个数组中2个值之间的数字量
- 21. 计算整数y在numpy数组中整数x之后的频率
- 22. 在O(n)时间估计一个数组元素的频率
- 23. 如何计算二维数组的频率
- 24. 使用函数来计算的列的频率在一个数据帧(熊猫)
- 25. 返回组频率,满足条件的值的计数和比率,按data.table中的组计算
- 26. 计算字符数组中的一行中的字符数
- 27. 计算事件的频率
- 28. 如何计算三重嵌套循环中的频率计数
- 29. 从频率响应计算FIR系数
- 30. mbsctows来计算一个数组中的宽字符数
你是这个达尔顿吗? http://stackoverflow.com/users/307394/dalton – trashgod 2010-04-30 00:50:38
这个问题有关吗? http://stackoverflow.com/questions/2740852/finding-the-best-person-in-an-array – trashgod 2010-04-30 00:50:58
是为什么它由于某种原因 – dalton 2010-04-30 00:52:36