2012-04-26 19 views

答えて

2

aとbの2つの配列を反復し、3番目の配列のcをバイナリ検索することによって、O(N^2 * logN)の複雑さで実行できます。

もう1つの方法は、配列の要素をハッシュに挿入し、他の2つの配列のaとbを繰り返し、c =(a + b)が存在するかどうかを調べることでO(N^2)ハッシュ。

+0

方法2の場合、すべての3つの配列が既にソートされているので、効率的に解決する方法はありますか? – Neel

+1

O(N^2)よりも(a、b)のペアを生成できません...ハッシュの検索はO(1)です。 – gabitzish

4

コール3つの配列ABC、および要素abc

aが固定されている場合、bが増加するだけであるため、最初の2つの配列をループしている間にも、cも増加できます。

だから、Cをループするためにあなたがabのペアを持っているすべての時間を持っていません。ちょうどをループしながらループしますが、Bとなります。

今その数、すべての3つの配列は、長さO(N)を持つA内の各値のために、あなたはBCのすべてのすべてを通過する必要があるため、時間の複雑さは、O(N^2)であると仮定O(N)である。

関連する問題