次の問題を考えると、現在の質問に対する解決策がないため、修正をお願いします(教授の試験の1つから取得しました!!!):
備考:これは宿題ではありません!
問題:
2 つの並べ替えられた配列A
(with length n
) & B
(with length m
) が与えられ、それぞれが
要素 (両方の配列内) は実数であり、数値X
(これも実数) です。
が存在するかどうかを知りたいのですがa ∈ A
、b ∈ B
次のようになります。
a + b = X
、O(n+m)
実行時間中。
解決 :
より大きい数値は必要ないため、最初に両方の配列の末尾からチェックを開始しますX
。
- i = n
k = m
一方 A[i] > X 、i = i -1
- 一方、B[k] > X 、k = k -1
j = 0 を定義します。現在のi
inA
とin から実行を開始j
しB
ます。
while i > 0 , j < k
:if A[i]+B[j] == X
、次に両方のセルを返します- そうしないと
j = j+1 , i = i -1
最終的に、2 つの要素が存在するか、配列の一方または両方が範囲外に到達するかのいずれかになります。これは、そのような要素が 2 つa + b = X
存在しないことを意味します。
どんな発言でも大歓迎です
ありがとう