class Solution {
public List<List<Integer>> permute(int[] nums) {
//创建结果数组
List<List<Integer>> ans = new ArrayList<>();
//回溯
backtrack(nums,new ArrayList<Integer>(),ans);
return ans;
}
//回溯方法
public void backtrack(int[] nums,ArrayList<Integer>track,List<List<Integer>> ans){
//满足条件
if(track.size() == nums.length){
ans.add(new ArrayList<>(track));
}
//选择
for(int i = 0;i < nums.length;i++){
if(track.contains(nums[i])) continue;
//做选择
track.add(nums[i]);
//回溯
backtrack(nums,track,ans);
//撤销选择
track.remove(track.size()-1);
}
}
}