6
ベクトルのすべての異なる順列を出力します
チャレンジ: 正の整数の可能性のある長いリストのすべての異なる順列を出力します。テスト時にベクトルの数が1,000未満であると想定する場合がありますが、プロセスは理論的には、サイズに関係なく、複数の数値を持つ任意のベクトルで機能します。 制限: メモリ使用量をO(n ^ 2)に制限する必要があります。ここで、nは入力ベクトルの要素数です。O(n!)を持つことはできません。つまり、すべての順列をメモリに保存することはできません。 時間の複雑さをO(結果サイズ* n)に制限する必要があります。すべての数値が等しい場合、これはO(n)になり、すべてが異なる場合、これはO(n!* n)になります。つまり、順列を作成して、他のすべての順列と照合して、確実に区別することはできません(つまり、O(n!^ 2 * n)になります)。 時間とメモリの制限が満たされていることを示す経験的測定は受け入れられます。 順列を実際に印刷/出力する必要があります(それらを格納することは不可能であるため)。 プログラムを十分に長く実行すると、すべての順列が(理論的には)出力されるはずです! 明確な順列: リスト[ 1、1、2 ]には、[ 1、1、2 ]、[ 1、2、1]、および[ 2、1、1 ]の 3つの順列があります。出力の順序を選択できます。 管理しやすいテストケース: Input: [1, 2, 1] Output: [1, 1, 2] [1, 2, 1] [2, 1, 1] Input: [1, 2, 3, 2] Output: [1, 2, 2, 3] …