class Solution { public void back(int n,ArrayList<Integer> nums,List<List<Integer>> output,int first){ if(first==n)output.add(new ArrayList<Integer>(nums)); for(int i=first;i<n;i++){ Collections.swap(nums,first,i); back(n,nums,output,first+1); Collections.swap(nums,i,first); } } public List<List<Integer>> permute(int[] nums) { int n=nums.length; List<List<Integer>> output=new ArrayList(); ArrayList<Integer> nums2=new ArrayList<Integer>(); for(int num:nums){ nums2.add(num); } back(n,nums2,output,0); return output; } }