Algorithm topic

回溯:模式识别与解题模板

本专题包含 7 道题。先辨认输入结构和目标,再选择能够持续保持关键不变量的算法,而不是只记住某一道题的代码。

高频模式

回溯7 道题

观察题目是否反复出现“回溯”对应的数据访问、状态压缩或边界推进特征。

字符串3 道题

观察题目是否反复出现“字符串”对应的数据访问、状态压缩或边界推进特征。

数组3 道题

观察题目是否反复出现“数组”对应的数据访问、状态压缩或边界推进特征。

哈希表1 道题

观察题目是否反复出现“哈希表”对应的数据访问、状态压缩或边界推进特征。

动态规划1 道题

观察题目是否反复出现“动态规划”对应的数据访问、状态压缩或边界推进特征。

深度优先搜索1 道题

观察题目是否反复出现“深度优先搜索”对应的数据访问、状态压缩或边界推进特征。

核心模板

  1. 先写清输入规模、目标值和允许修改的数据。
  2. 定义每一步开始和结束时必须成立的不变量。
  3. 把循环、递归、队列或状态转移拆成可验证事件。
  4. 用最小输入、重复值和退化结构验证边界。

常见错误

  • 只根据样例选择算法,没有核对复杂度上限。
  • 更新多个指针或状态时破坏旧值依赖。
  • 忽略空输入、重复值、断开结构或极端顺序。
  • 代码结果正确,但解释没有说明为什么不会漏解或重复。

代表题

#77 · MEDIUM

组合

返回 1..n 中所有 k 个数的组合。

回溯
#46 · MEDIUM

全排列

返回数组所有排列。

数组回溯
#39 · MEDIUM

组合总和

找出可重复选择元素、总和为 target 的组合。

数组回溯
#52 · HARD

N 皇后 II

计算互不攻击的 n 皇后摆放方案数。

回溯
#22 · MEDIUM

括号生成

生成所有有效的 n 对括号组合。

字符串动态规划回溯
#79 · MEDIUM

单词搜索

判断单词能否由相邻格且不重复使用格子组成。

深度优先搜索数组字符串回溯矩阵
查看本分类全部 7 道题