class Solution {
List<List<Integer>> res = new ArrayList<>();
LinkedList<Integer> path = new LinkedList<>();
public List<List<Integer>> permute(int[] nums) {
int[] used = new int[22];
backtracking(used, nums);
return res;
}
public void backtracking(int[] used,int[] nums){
if(path.size() == nums.length){
res.add(new ArrayList(path));
return;
}
for(int i = 0; i < nums.length;i++){
if(used[nums[i] + 10] == 0){
path.add(nums[i]);
used[nums[i] + 10] = 1;
backtracking(used, nums);
used[nums[i] + 10] = 0;
path.removeLast();
}else continue;
}
}
}
穷举,用used数组来记录已经使用过的元素。