-1

最小の時間複雑度A = [1,2,3,4,1,1]でJavaの配列の最大繰り返し頻度を見つける最速の方法は何 ですか?

ans = 1

どうすればこれを行うことができますか

4

1 に答える 1

1

(ほとんど)線形時間の解決策は、aを使用して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()これも線形時間で行われます。

于 2013-02-25T00:45:23.620 に答える