class Solution {
//结果
List<List<Integer>> ans = new LinkedList<>();
public List<List<Integer>> permute(int[] nums) {
LinkedList<Integer> track = new LinkedList<>();
backTrack(nums, track);
return ans;
}
//dfs
void backTrack(int[] nums, LinkedList<Integer> track) {
//生成了一个满足的全排列
if (track.size() == nums.length) {
ans.add(new LinkedList<>(track));
return ;
}
//数字不重复
for (int i = 0; i < nums.length; i++) {
if (track.contains(nums[i])) {
continue;
}
//加数字
track.add(nums[i]);
//dfs
backTrack(nums, track);
//回溯
track.removeLast();
}
}
}