ソートされた整数の配列が与えられた場合、合計が K になる整数のペアを見つけるにはどうすればよいでしょうか?
例: array = 1,3,5,6,10
、K = 6
答えは 1 と 5 です。
時間の複雑さは最小限に抑える必要があります。
ソートされた整数の配列が与えられた場合、合計が K になる整数のペアを見つけるにはどうすればよいでしょうか?
例: array = 1,3,5,6,10
、K = 6
答えは 1 と 5 です。
時間の複雑さは最小限に抑える必要があります。
このブログ投稿をご覧になることをお勧めします。
http://www.codingatwork.com/2011/07/array-sum/
私のアプローチは、 のリストのバイナリ検索を実行し、K/2
1 つの変数a
を左に、別の変数b
を右に移動して、解を見つけようとすることa+b=K
です。
アイデアはa
、以下の最大数からK/2
開始b
し、 より大きい最小数から開始することですa
。繰り返しますが、バイナリ検索を使用して、配列内の次の要素を見つけa
てみましょう。b
それで
a+b = K
、return (a,b)
。a+b < K
移動します。b
a+b > K
移動します。a
もちろん、バイナリ検索をスキップしてa
、配列の先頭とb
末尾から開始してから実行することもできます。
a+b = K
、return (a,b)
。a+b < K
移動します。a
a+b > K
移動します。b
これはおそらく高速です。