java
class Solution {
public void go(List<List<Integer>> ans,int[] nums,int pos,List<Integer> cur) {
//System.out.println(cur);
int len=nums.length;
if(pos==len) {
ans.add(cur);
}
else {
for(int i=0;i<len;i++) {
//System.out.println(nums[i]+" "+cur.contains(nums[i])+" "+cur);
if(!cur.contains(nums[i])) {
List<Integer>tmp=new ArrayList<Integer>();
for(Integer j:cur)tmp.add(j);
tmp.add(nums[i]);
//System.out.println(tmp);
go(ans, nums, pos+1, tmp);
}
}
}
}
public List<List<Integer>> permute(int[] nums) {
List<Integer>cur=new ArrayList<Integer>();
List<List<Integer>> ans=new ArrayList<List<Integer>>();
go(ans, nums, 0, cur);
return ans;
}
}