算法 23周 46.Permutations

163 阅读1分钟

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

Example:

Input: [1,2,3]
Output:
[
  [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<List<Integer>> ret = new ArrayList();
        List<Integer> numList = new ArrayList();
        int length = nums.length;
        for(int num:nums){
            numList.add(num);
        }
        int[] newInt = new int[length];
        add(ret,numList,0,newInt);

        return ret;
    }

    public void add(List<List<Integer>> ret,List<Integer> numList,int length,int[] newInt){

        if(numList.size()==0){
            List<Integer> add = new ArrayList();
            for(int num:newInt){
                add.add(num);
            }
            ret.add(add);
        }else{
            for(int i = numList.size()-1;i>=0;i--) {
                newInt[length] = numList.get(i);
                numList.remove(i);
                add(ret,numList,length+1,newInt);
                numList.add(i,newInt[length]);
            }
        }

    }