题目链接:全排列
class Solution {
int [] nums;
List<List<Integer>> res = new ArrayList<>();
List<Integer> path;
boolean[] st;
public List<List<Integer>> permute(int[] nums) {
this.nums = nums;
path = Arrays.asList(new Integer[nums.length]);
st = new boolean[nums.length];
dfs(0);
return res;
}
// u 代表当前第几个位置
public void dfs(int u){
if(u == nums.length){
res.add(new ArrayList<>(path));
return;
}
// 枚举当前位置可以填写哪些数
for(int i = 0; i < nums.length; i ++){
if(!st[i]) {
path.set(u, nums[i]);
st[i] = true;
dfs(u + 1);
st[i] = false;
}
}
}
}