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);
}
}
}