LeetCodd——全順序(java)——遡及アルゴリズム


整列
反復されていない数字のシーケンスを指定して、可能なすべての配置を返します。
例:
  : [1,2,3]
  :
[
  [1,2,3],
  [1,3,2],
  [2,1,3],
  [2,3,1],
  [3,1,2],
  [3,2,1]

構想:やはり組み合わせの問題を並べて、遡及法を使って、しかし注意したのは、繰り返しのが跳び越えることに出会うのです。
コードは以下の通りです
package     ;

import java.util.ArrayList;
import java.util.List;

public class     {
	
	
	public List> permute(int[] nums) {
		List> list = new ArrayList<>();
        List aIntegers = new ArrayList<>();
        chuli(aIntegers, 0 , nums,list);
        return list;
    }

	private static void chuli(List aIntegers, int n , int[] nums, List> list) {
		if (n == nums.length) {
			list.add(new ArrayList(aIntegers));
			return;
		}
		
		for (int i = 0; i < nums.length; i++) {
			if (aIntegers.contains(nums[i])) {
				continue;
			}
			aIntegers.add(nums[i]);
			chuli(aIntegers, n+1, nums, list);
			aIntegers.remove(aIntegers.size()-1);
		}
	}
}