classSolution { publicvoidbacktrack(int n, ArrayList<Integer> nums, List<List<Integer>> output, int first) { // if all integers are used up if (first == n) output.add(newArrayList<Integer>(nums));
for (inti= first; i < n; i++) { // place i-th integer first // in the current permutation Collections.swap(nums, first, i); // use next integers to complete the permutations backtrack(n, nums, output, first + 1); // backtrack Collections.swap(nums, first, i); } }
public List<List<Integer>> permute(int[] nums) { // init output list List<List<Integer>> output = newLinkedList<List<Integer>>();
// convert nums into list since the output is a list of lists ArrayList<Integer> nums_lst = newArrayList<Integer>(); for (int num : nums) nums_lst.add(num);