トピック:
与えられた数字の配列は、完全な順列にすべての可能なリターンを繰り返されていません。
例:
入力:[1,2,3]
出力
:
[ [1,2,3]、
[1,3,2]、
[2,1,3]、
[2,3,1]、
[3,1,2 ]
[3,2,1]
]
問題解決:
クラスソリューション{ パブリックリスト<リスト<整数>>並び替える(INT [] NUMS){ リスト <リスト<整数>> RES = 新規のArrayList <> (); INT []訪問= 新しい int型[nums.length]。 バックトラック(RES、NUMS、新しいのArrayList <Integer型> 、()訪問しました)。 リターンのres; } プライベート ボイドバックトラック(一覧<一覧<整数>> RES、値int [] NUMSを、ArrayListの<整数> TMP、INT []訪問){ 場合(tmp.size()== nums.length){ res.add(新ArrayList <> (TMP))。 返します。 } のために(int型、iはnums.lengthを<; I = 0 iは++ ){ 場合([I] == 1訪問)続けます。 訪問[I] = 1 。 tmp.add(NUMS [I])。 バックトラック(resが、NUMSは、tmpが、訪問しました)。 [i]が訪れた = 0 ; tmp.remove(tmp.size() - 1 )。 } }
}