递归

public class Recursion {
public static void main(String[] args) {
int[] nums = { 1, 2, 3 };
Recursion recursion = new Recursion();
List<List<Integer>> permute = recursion.permute(nums);
System.out.println(permute.toString());
}
public List<List<Integer>> permute(int[] nums) {
List<List<Integer>> list = new ArrayList<>();
swap(list, nums, 0);
return list;
}
public List<Integer> swap(List<List<Integer>> list, int[] nums, int k) {
if (k >= nums.length - 1) {
List<Integer> miniList = new ArrayList<>();
for (int i = 0; i < nums.length; i++) {
miniList.add(nums[i]);
}
list.add(miniList);
return null;
}
for (int i = k; i < nums.length; i++) {
int temp = nums[i];
nums[i] = nums[k];
nums[k] = temp;
swap(list, nums, k + 1);
temp = nums[i];
nums[i] = nums[k];
nums[k] = temp;
}
return null;
}
}
36
1
public class Recursion {
2
public static void main(String[] args) {
3
int[] nums = { 1, 2, 3 };
4
Recursion recursion = new Recursion();
5
List<List<Integer>> permute = recursion.permute(nums);
6
System.out.println(permute.toString());
7
}
8
public List<List<Integer>> permute(int[] nums) {
9
List<List<Integer>> list = new ArrayList<>();
10
swap(list, nums, 0);
11
12
return list;
13
}
14
15
public List<Integer> swap(List<List<Integer>> list, int[] nums, int k) {
16
if (k >= nums.length - 1) {
17
List<Integer> miniList = new ArrayList<>();
18
for (int i = 0; i < nums.length; i++) {
19
miniList.add(nums[i]);
20
}
21
list.add(miniList);
22
return null;
23
}
24
for (int i = k; i < nums.length; i++) {
25
int temp = nums[i];
26
nums[i] = nums[k];
27
nums[k] = temp;
28
swap(list, nums, k + 1);
29
temp = nums[i];
30
nums[i] = nums[k];
31
nums[k] = temp;
32
}
33
34
return null;
35
}
36
}
<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

浙公网安备 33010602011771号