我目前正在尝试验证,给定一个长度为 N 的未排序数组 A 和一个整数 k,是否存在某个元素出现 n/k 次或更多次。
我对这个问题的想法是计算众数,然后将其与 n/k 进行比较。但是,我不知道如何快速计算此模式。我的最终结果需要是nlog(k),但我真的不知道如何做到这一点。我能找到的最快的是nk...
使用哈希表来统计每个值的频率:
uint[int] counts;
foreach(num; myArray) {
counts[num]++;
}
int mostFrequent;
uint maxCount = 0;
foreach(num, count; counts) {
if(count > maxCount) {
mostFrequent = num;
maxCount = count;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)