両端で挿入を処理できる必要があるデータ構造を必要とするパブリック メソッドを実装しています。O(N)時間ArrayList.add(0,key)かかるので、代わりに a を使用することにしました -とメソッドは両方ともO(1)時間かかるはずです。LinkedListaddaddFirst
ただし、既存の API を使用するには、私のメソッドはArrayList. だから私は2つのアプローチがあります:
(1) useを使用して、 N/2が前に追加され、N/2が最後に追加されるN要素LinkedListのすべての追加を行います。次に、コンストラクター
を呼び出して、これを次のように変換します。LinkedListArrayListArrayListreturn new ArrayList<key>(myLinkedList);
(2) and を使用してN/2要素を後ろに追加しArrayList、 callを使用してN/2要素を前に追加します。これを返します。ArrayList.add(key)ArrayList.add(0,key)ArrayList
時間の複雑さの点でどのオプションがより最適化されているかについて、誰かコメントできますか? Java がコンストラクターをどのように実装しているかはわかりませんArrayList。これは、どのオプションが優れているかを決定する重要な要素です。
ありがとう。