3 つの並べ替えられた配列が与えられます。a+b=c となるように、各配列から 1 つずつ、3 つの要素を見つけます。O(n ^ 3)時間の複雑さ未満で実行できますか?私を助けてください。
2 に答える
4
3 つの配列をA
、、 、要素を 、 、と呼びます。B
C
a
b
c
最初の 2 つの配列をループしている間、a
が固定されてb
いるため、増加するだけであり、増加するc
こともできます。
したがって、 andC
のペアがあるたびにループする必要はありません。ループしながらループするだけです。a
b
C
B
ここで、3 つの配列すべての長さが O(N) であると仮定します。時間計算量は O(N^2) です。これは、 の各値について、O(N) である のすべてとすべてをA
通過する必要があるためです。B
C
于 2012-04-26T14:13:46.940 に答える
2
O(N^2 * logN) の複雑さで実行するには、a と b の 2 つの配列を反復処理し、3 番目の配列で c をバイナリ検索します。
別の方法は、配列の 1 つの要素をハッシュに挿入し、他の 2 つの配列で a と b を繰り返し、c = (a + b) がハッシュに存在するかどうかを調べる O(N^2) です。
于 2012-04-26T14:11:15.543 に答える