题干:
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。
示例 1:
输入:nums = [1,2,3]
输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
public static void main(String[] args) {
int[] nums = {1,2,3};
List<List<Integer>> res = permute(nums);
for (List<Integer> list : res) {
System.out.println(list);
}
}
static List<List<Integer>> Res = new ArrayList<>();
public static List<List<Integer>> permute(int[] nums) {
boolean[] visited = new boolean[nums.length];
dfs(0,nums,new ArrayDeque<>(),visited);
return Res;
}
public static void dfs(int Index, int[] nums, Deque<Integer> path,boolean[] visited){
if(path.size()== nums.length){
Res.add(new ArrayList<>(path));
}
for(int i=0;i< nums.length;i++){
if(visited[i]==true) continue;
else{
path.add(nums[i]);
visited[i] = true;
dfs(i+1,nums,path,visited);
visited[i] = false;
path.removeLast();
}
}
}