11を言う、私はn
までの範囲の配列があると、それは、今2つのパターンの合計についてn(n + 1)/ 2を計算するにはどうすればよいですか?
U = 1 2 3 4 5 6 7 8 9 10 11
であり、Iは、アレイA(Uのサブアレイ)を有する:
1 3 4 9
アレイ-B(Aと共通の何もUの他のサブ配列):すべてのこれらの3セットがSORある
2 5 6 10
留意されたいです。テッド。
(a[i+1]-a[i]-1)
ごとにn(n+1)/2
を計算する必要があります。ここで、i
は配列のインデックスであり、a
は一般化された配列です。
また、両端のコーナーケースも考慮してください。最初の桁から1を引いてからn(n+1)/2
を計算し、最後の桁を11から減算してからn(n + 1)/ 2を計算します。
たとえば、集合Aの場合:私たちはここに (3-1-1)* + (4-3-1)* + (9-4-1)* + Corner Cases
コーナーケースを取得:(1-0)* + (11-9)*
のx *は、x(X + 1)セットBについても同様/ 2
を意味します。私たちは、(5-2-1)* + (6-5-1)* + (10-6-1)* + (2-1)* + (11-10)*
今、私は計算する必要がいますO(1)の複雑さの集合Aと集合Bを用いた(AUB)の解。これを行う方法はありますか?
複雑さがO(N)の場合、2つの配列をマージして上記の式を適用するだけです。そこで解決策
A U B : 1,2,3,4,5,6,9,10
= (9-6-1)*+ (11-10)*
C++コードなし、C++回答なし。 –
尊敬されたメンバー、私はC++コードは必要ありません。私は論理が必要です。私はそれを自分でコード化します。 –