↩︎️ 回溯
在搜索空间中通过「选择 → 递归 → 撤销」的模板枚举所有可能性,适合排列、组合、子集、迷宫等问题。
8 题 · 中等 ×7 困难 ×1
| # | 题目 | 难度 |
|---|---|---|
| 46 | 全排列 | 中等 |
| 78 | 子集 | 中等 |
| 17 | 电话号码的字母组合 | 中等 |
| 39 | 组合总和 | 中等 |
| 22 | 括号生成 | 中等 |
| 79 | 单词搜索 | 中等 |
| 131 | 分割回文串 | 中等 |
| 51 | N 皇后 | 困难 |
回溯模板
1 | |
核心思路
- 全排列:used 数组记录已选,每次从未选中的数中选一个加入 path。
- 子集:从当前 index 开始枚举,每个节点都可以收录到结果集中。
- 组合总和:允许重复选,每次从当前 index 开始;剩余 target < 0 则剪枝。
- 括号生成:剩余左括号数 > 0 可加
(;剩余右括号数 > 剩余左括号数可加)。 - N 皇后:用三个集合分别记录已占用的列、左对角线、右对角线,逐行放置皇后。