数组的全排列
开始定势思维了,按照subsets题目,在dfs参数中加了个下标index,其实不用,注意ArrayList在remove删除下标时是index不是元素,直接上代码
class Solution {
public static List<List<Integer>> ans = new ArrayList<>();
public static boolean v[] = new boolean[100];
ArrayList<Integer> res = new ArrayList<Integer>();
public void dfs(ArrayList<Integer> res, int[] nums) {
// 边界条件
if (res.size() >= nums.length) {
ans.add(new ArrayList<Integer>(res));
return;
}
for (int i = 0; i < nums.length; i++) {
if (!v[i]) {
v[i] = true;
res.add(nums[i]);
dfs( res, nums);
// 注意,remove的是index下标不是元素
res.remove(res.size() - 1);
v[i] = false;
}
}
}
public List<List<Integer>> permute(int[] nums) {
ans.clear();
dfs(res, nums);
return ans;
}
}