static int modal( int[] values ) {
int modal = 0;
int mfreq = 0;
for( int i : values ) {
// Is this value the most frequent we've found so far?
int freq = 0;
for( int j : values ) {
if( j == i ) {
freq++;
}
}
if( freq > mfreq ) {
modal = i;
mfreq = freq;
}
return modal;
}
# 1 楼答案
一个基本但效率低下的算法是:
通过预先计算每个值的频率,并将其存储在地图或类似文件中,您可以做得更好一些,尽管这仍然需要通过值进行循环,并且仍然需要另一个循环来确定哪个频率最高
# 2 楼答案
这有点离谱,我不知道它的性能如何,但是如果你愿意在Java中尝试一下Groovy