全排列
- 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。
示例 1:
输入: candidates = [2,3,6,7], target = 7
输出: [[7],[2,2,3]]
示例 2:
输入: candidates = [2,3,5], target = 8
输出: [[2,2,2,2],[2,3,3],[3,5]]
class Solution {
public List<List<Integer>> permute(int[] nums) {
List<List<Integer>> result = new ArrayList<>();
perm(nums, new ArrayList<>(), result);
return result;
}
public void perm(int[] arr, List<Integer> stack, List<List<Integer>> result) {
if (arr.length == 0) {
result.add(stack);
}
for (int i = 0; i < arr.length; i++) {
List<Integer> stack1 = new ArrayList<>();
stack1.addAll(stack);
stack1.add(arr[i]);
int[] newArr = new int[arr.length - 1];
int num = 0;
for (int j = 0; j < arr.length; j++) {
if (j != i) {
newArr[num] = arr[j];
num++;
}
}
perm(newArr, stack1, result);
}
}
}