5/30/2014

35. Permutations

public class Solution {
    public ArrayList<ArrayList<Integer>> permute(int[] num) {
        ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>> ();
        ArrayList<Integer> temp = new ArrayList<Integer> ();
       
        int len = num.length;
        int[] used = new int[len];
       
        getpermute(num, len, used, temp, res);
        return res;
    }
   
    public void getpermute(int[] num, int len, int[] used, ArrayList<Integer> temp, ArrayList<ArrayList<Integer>> res) {
        if (temp.size()==len) {
            res.add((ArrayList<Integer>) temp.clone());
            return;
        }
       
        for (int i=0; i<len; i++) {
            if (used[i]==0) {
                temp.add(num[i]);
                used[i] = 1;
                getpermute(num, len, used, temp, res);
                used[i] = 0;
                temp.remove(temp.size()-1);
            }
        }
    }
}

没有评论:

发表评论