Permutations

Given a collection of distinct numbers, return all possible permutations.

For example,
[1,2,3] have the following permutations:

[
  [1,2,3],
  [1,3,2],
  [2,1,3],
  [2,3,1],
  [3,1,2],
  [3,2,1]
]
public List<List<Integer>> permute(int[] nums) {
        List<Integer> numbers = new ArrayList<>();
        for (int num :
                nums) {
            numbers.add(num);
        }
        List<List<Integer>> results = new ArrayList<>();
        boolean[] booleans = new boolean[nums.length];
        for (int i=0;i<booleans.length;i++){
            booleans[i] = true;
        }
        helper(numbers, new ArrayList<>(),results,booleans);
        return results;
    }
    public void helper(List<Integer> nums,List<Integer> curr,List<List<Integer>> results,boolean[] booleans){
        if (curr.size()==nums.size()){
            List<Integer> item = new ArrayList<>();
            item.addAll(curr);
            results.add(item);
            return;
        }
        for (int i = 0; i < nums.size(); i++) {
            if (booleans[i]==true){
                curr.add(nums.get(i));
                booleans[i] = false;
                helper(nums,curr,results,booleans);
                booleans[i] = true;
                curr.remove(curr.size()-1);
            }
        }
    }
原文地址:https://www.cnblogs.com/bingo2-here/p/8515100.html