int の任意True
のリストがあり、合計が 0 になるペアがリストに存在する場合に戻ります。
n*log(n) の複雑さでソリューションを作成できました。以下に簡単なスケッチを示します (もっと簡単な方法があります。以下を参照してください)。
- 配列をソートします。最初の要素へのポインターを設定します。
- ポインターの要素 (最初に呼び出す) と配列の反対側の要素 (最後に呼び出す) を調べます。最初の要素の大きさが最後の要素より大きい場合は、最初の要素を削除し、ポインターを最後の要素に移動します。それ以外の場合は、(可能な) 合計を探して、配列を逆方向に反復処理を開始します。
- 合計が見つからない場合は、ポインターを次の要素に移動し、2 を繰り返します。
上記の説明は重要ではありません。明らかに、辞書を使用する別のソリューションがあります。誰かが私を啓発できますか?