1

私はループのためにこれを持っています:

public void method(int[] arr) {
    Set set = new HashSet();

    for(int i = 0; i < arr.length; i++){
        set.add(arr[i]);
    }
}

このメソッドは O(n) にありますか?

4

2 に答える 2

4

HashSet を使用する場合は、はいHashSetがあり、for ループを使用してO(1)乗算します。O(n)したがって、構造全体は を持っていO(n)ます。

于 2013-03-17T09:56:43.693 に答える
-1

HashSetほぼ線形の挿入パフォーマンスがあるため、はい: n そのような操作は O(n) になります。

代わりにこれを行うことに注意してください。これにより、すべてのコードが行うこととまったく同じ結果が得られます。

Set<Integer> set = new HashSet<Integer>(Arrays.asList(arr));

上記のように、セットも入力する必要があります。

于 2013-03-17T10:01:03.363 に答える