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]
.
public class Solution {
public ArrayList<ArrayList<Integer>> permute(int[] num) {
ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
if (num.length < 1) {
return result;
}
ArrayList<Integer> oneResult = new ArrayList<Integer>();
oneResult.add(num[0]);
result.add(oneResult);
ArrayList<ArrayList<Integer>> temp = new ArrayList<ArrayList<Integer>>();
for (int i = 1; i < num.length; i++) {
for (ArrayList<Integer> al : result) {
for (int j = 0; j <= al.size(); j++) {
ArrayList<Integer> newArr = (ArrayList<Integer>) al.clone();
newArr.add(j, num[i]);
temp.add(newArr);
}
}
result = temp;
temp = new ArrayList<ArrayList<Integer>>();
}
return result;
}
}