在Java中以最小时间复杂度A = [1,2,3,4,1,1]找到最大重复频率的最快方法是什么
答案 = 1
如何才能做到这一点
(大部分)线性时间解决方案是使用 aHashMap<Integer, Integer>
并构建出现在 A 中的所有值的直方图。
HashMap<Integer, Integer> m = new HashMap<Integer, Integer>();
for(int x : A)
{
Integer v = m.get(x);
if (null == v) {v = Integer.valueOf(0);}
m.put(x, ++v);
}
遍历整个地图并返回具有最大值的条目。使用该entrySet()
方法,这也可以在线性时间内完成。