2013-02-25 92 views
-1

在最小時間複雜度下以最快的方式找到java中陣列的最大頻率 A = [1,2,3,4,1,1]陣列中最大重複頻率

ANS = 1

如何才能做到這一點

+3

排序一般情況下?如果數字的範圍受限於一系列的計數器。 – 2013-02-25 00:21:20

+0

請參閱http://stackoverflow.com/questions/1991984/algorithm-for-finding-the-number-which-appears-the-most-in-a-row-c – user1929959 2013-02-25 00:23:08

+2

爲什麼答案= 1? 1重複了3次,答案應該是3對嗎? – Kent 2013-02-25 00:24:25

回答

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()方法,這也是線性時間。