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