Given a collection of 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]
, and [3,2,1]
.
代码如下 参考Ganker_Code
public static ArrayList<ArrayList<Integer>> permute(int[] num) {
ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> temp = new ArrayList<Integer>();
if (num == null || num.length == 0)
return result;
boolean[] used = new boolean[num.length];
helper(num, used, temp, result);
return result;
}
public static void helper(int[] num, boolean[] used,
ArrayList<Integer> temp, ArrayList<ArrayList<Integer>> result) {
if (temp.size() == num.length) {
result.add(new ArrayList<Integer>(temp));
return;
}
for (int i = 0; i < num.length; i++) {
if (!used[i]) {
temp.add(num[i]);
used[i] = true;
helper(num, used, temp, result);
temp.remove(temp.size() - 1);
used[i] = false;
}
}
}