观察题目是否反复出现“动态规划”对应的数据访问、状态压缩或边界推进特征。
多维动态规划:模式识别与解题模板
本专题包含 9 道题。先辨认输入结构和目标,再选择能够持续保持关键不变量的算法,而不是只记住某一道题的代码。
高频模式
观察题目是否反复出现“数组”对应的数据访问、状态压缩或边界推进特征。
观察题目是否反复出现“矩阵”对应的数据访问、状态压缩或边界推进特征。
观察题目是否反复出现“字符串”对应的数据访问、状态压缩或边界推进特征。
观察题目是否反复出现“双指针”对应的数据访问、状态压缩或边界推进特征。
核心模板
- 先写清输入规模、目标值和允许修改的数据。
- 定义每一步开始和结束时必须成立的不变量。
- 把循环、递归、队列或状态转移拆成可验证事件。
- 用最小输入、重复值和退化结构验证边界。
常见错误
- 只根据样例选择算法,没有核对复杂度上限。
- 更新多个指针或状态时破坏旧值依赖。
- 忽略空输入、重复值、断开结构或极端顺序。
- 代码结果正确,但解释没有说明为什么不会漏解或重复。
代表题
三角形最小路径和
求自顶向下相邻移动的最小路径和。
最小路径和
只能向右或向下,求左上到右下最小路径和。
不同路径 II
有障碍时计算从左上到右下的不同路径数。
最长回文子串
返回最长回文子串。
交错字符串
判断 s3 是否由 s1、s2 保持各自顺序交错组成。
编辑距离
求把 word1 转成 word2 的最少插入、删除、替换次数。
买卖股票的最佳时机 III
最多完成两笔交易,求最大利润。
买卖股票的最佳时机 IV
最多完成 k 笔交易,求最大利润。