难度:中等
频次:119
题目:
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。
解题思路:回溯遍历
class Solution {
public List> permute(int[] nums) {
//数组长度、数子个数
int len=nums.length;
//创建最终结果 res
List> res=new ArrayList<>();
//如果数组长度为0,那就不用排列了
if(len==0) return res;
//将path放在deque里,是因为Deque可以取出前后
Deque path=new ArrayDeque<>(len);
//标记的flag,如果这个数字用过了,那就标记为1,还没用过就为0
boolean[] flag=new boolean[len];
//DFS遍历 其实就是做LEN次DFS遍历
DFS(nums,len,0,path,flag,res);
return res;
}
public void DFS(int[] nums,int len,int depth,Deque path, boolean[] flag
, List> res){
if(len==depth){
res.add(new ArrayList<>(path));
return ;
}
//len次遍历在这里凸显出来 || 以及一个DFS树len个元素也在这里凸显
for(int i=0;i



