leetcode 46.完全な配列のJava

トピック:

与えられた数字の配列は、完全な順列にすべての可能なリターンを繰り返されていません。

例:

入力:[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 )。
        } 
    } 
}

 

おすすめ

転載: www.cnblogs.com/yanhowever/p/11589047.html