题目介绍
题解
代码如下:
class Solution {
List<List<Integer>> res = new ArrayList<>();// 存放符合条件结果的集合
List<Integer> path = new ArrayList<>();// 用来存放符合条件结果
boolean[] used; // 标记数组,记录数字是否被使用过
public List<List<Integer>> permute(int[] nums) {
used = new boolean[nums.length];
dfs(nums);
return res;
}
public void dfs(int[] nums) {
if (path.size() == nums.length) {
res.add(new ArrayList<>(path));
return;
}
for (int i = 0; i < nums.length; i++) {
if (used[i] == false) {
path.add(nums[i]);
used[i] = true;
dfs(nums);
// 回溯,撤销选择并从路径中移除当前数字
path.remove(path.size() - 1);
used[i] = false;
}
}
}
}