以最小的时间复杂度在java中查找数组中最大重复频率的最快方法是什么 A = [1,2,3,4,1,1]
ans = 1
怎么做呢
答案 0 :(得分:1)
(主要)线性时间解决方案是使用HashMap<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()
方法,这也是在线性时间内完成的。