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 8817. 电话号码的字母组合
9920. 有效的括号
101021. 合并两个有序链表
11+ 46. 全排列
111253. 最大子数组和
121370. 爬楼梯
131494. 二叉树的中序遍历
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