给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案
输入:数组
输出:二维列表
思路:等待二刷
class Solution {
List<List<Integer>> result = new ArrayList<>();
LinkedList<Integer> path = new LinkedList<>();
boolean[] used;
public List<List<Integer>> permute(int[] nums) {
int len = nums.length;
used = new boolean[len];
if(len == 0){
return result;
}
backtrack(nums);
return result;
}
public void backtrack(int[] nums){
//回溯终止条件
if(path.size() == nums.length){
result.add(new ArrayList<>(path));
return;
}
for(int i = 0; i < nums.length; i++){
if(used[i]){
continue;
}
used[i] = true;
path.add(nums[i]);
backtrack(nums);
//然后状态回溯
path.removeLast();
used[i] = false;
}
}
}