サイズ N の配列があるとします (N は常に偶数です)。配列のすべての要素がペアを形成すると、追加すると同じ合計が得られます。合計を見つけます。これは絶対に宿題ではありません。例えば :
A = {1,4,3,2,5,6,8,7} . ans = 9 は、{ (1,8) , (2,7) , (3,6) , (4,5) } が和 9 のペアを形成するためです。
重複することもあります。B = {3,4,5,3,4,5}。ans = 8
私が試したことは
1) 配列 = O(nlogn) をソートします。
2) ソートされた配列の最小値と最大値の合計を見つけます。これが必要な合計です。これは、これら 2 以外の場合、同じ合計で形成できないペアが少なくとも 1 つ存在するためです。私がはっきりしていることを願っています。
さて、私の質問ですが、これを線形時間で行うことはできますか? 「合計」は事前にわからないため、数値を直接ハッシュしても十分ではありません。