File tree Expand file tree Collapse file tree 2 files changed +37
-0
lines changed Expand file tree Collapse file tree 2 files changed +37
-0
lines changed Original file line number Diff line number Diff line change 8
8
17. 电话号码的字母组合
9
9
20. 有效的括号
10
10
21. 合并两个有序链表
11
+ 46. 全排列
11
12
53. 最大子数组和
12
13
70. 爬楼梯
13
14
94. 二叉树的中序遍历
Original file line number Diff line number Diff line change
1
+ // 全排列
2
+
3
+
4
+ /*
5
+ 回溯:
6
+ 1、定义全局变量res存放回溯过程得到的所有子结果
7
+ 2、定义局部变量track存放回溯过程的临时子结果
8
+ 3、调用递归函数,处理得到所有子结果,返回结果
9
+ 4、定义递归函数
10
+ 1)终止条件,存储子结果
11
+ 2)for循环:剪枝条件 → 做选择 → 递归 → 撤销选择 → 回溯
12
+ */
13
+ class Solution {
14
+ private List <List <Integer >> res = new ArrayList <>();
15
+
16
+ public List <List <Integer >> permute (int [] nums ) {
17
+ LinkedList <Integer > track = new LinkedList <>();
18
+ backtrack (nums , track );
19
+ return res ;
20
+ }
21
+
22
+ private void backtrack (int [] nums , LinkedList track ) {
23
+ if (track .size () == nums .length ) {
24
+ res .add (new ArrayList (track ));
25
+ return ;
26
+ }
27
+ for (int i = 0 ; i < nums .length ; i ++) {
28
+ if (track .contains (nums [i ])) {
29
+ continue ;
30
+ }
31
+ track .add (nums [i ]);
32
+ backtrack (nums , track );
33
+ track .removeLast ();
34
+ }
35
+ }
36
+ }
You can’t perform that action at this time.
0 commit comments