### 题目列表 - 斐波那契同类问题 - [剑指 Offer 10- I. 斐波那契数列](https://leetcode-cn.com/problems/fei-bo-na-qi-shu-lie-lcof/)⭐️ ✅ - [70. 爬楼梯](https://leetcode-cn.com/problems/climbing-stairs/)⭐️ ✅ - 子序列/子数组/子串 - [300. 最长递增子序列](https://leetcode-cn.com/problems/longest-increasing-subsequence/)(难度中等)⭐️⭐️ ✅ - [152. 乘积最大子数组](https://leetcode-cn.com/problems/maximum-product-subarray/description/) ✅ - [53. 最大子序和](https://leetcode-cn.com/problems/maximum-subarray/)(注:本题同[剑指 Offer 42. 连续子数组的最大和](https://leetcode-cn.com/problems/lian-xu-zi-shu-zu-de-zui-da-he-lcof/))⭐️ ✅ - [1143. 最长公共子序列](https://leetcode-cn.com/problems/longest-common-subsequence/)(难度中等)⭐️ ✅ - [5. 最长回文子串](https://leetcode-cn.com/problems/longest-palindromic-substring/)(难度中等)⭐️ ✅ - [392. 判断子序列](https://leetcode-cn.com/problems/is-subsequence/) - [股票问题系列通解(转载翻译)](https://leetcode-cn.com/circle/article/qiAgHn/)⭐️ - [121. 买卖股票的最佳时机](https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/)(注:本题同[剑指 Offer 63. 股票的最大利润](https://leetcode-cn.com/problems/gu-piao-de-zui-da-li-run-lcof/))✅ - [122. 买卖股票的最佳时机 II](https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii/) ✅ - [123. 买卖股票的最佳时机 III](https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-iii/)(难度困难) - [188. 买卖股票的最佳时机 IV](https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-iv/)(难度困难) - [309. 最佳买卖股票时机含冷冻期](https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-with-cooldown/)(难度中等) - [714. 买卖股票的最佳时机含手续费](https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/)(难度中等) - 路径条数和路径和的问题 - [120. 三角形最小路径和](https://leetcode-cn.com/problems/triangle/)(难度中等)⭐️⭐️ ✅ - [64. 最小路径和](https://leetcode-cn.com/problems/minimum-path-sum/)(难度中等)⭐️⭐️ ✅ - [62. 不同路径](https://leetcode-cn.com/problems/unique-paths/)(难度中等) - [63. 不同路径 II](https://leetcode-cn.com/problems/unique-paths-ii/)(难度中等) - [剑指 Offer 47. 礼物的最大价值](https://leetcode-cn.com/problems/li-wu-de-zui-da-jie-zhi-lcof/)(难度中等) - 一维数组+最优解 - [322. 零钱兑换](https://leetcode-cn.com/problems/coin-change/)(难度中等)⭐️⭐️ ✅ - [198. 打家劫舍](https://leetcode-cn.com/problems/house-robber/)(难度中等)⭐️ ✅ - [剑指 Offer 14- I. 剪绳子](https://leetcode-cn.com/problems/jian-sheng-zi-lcof/)(难度中等) - [343. 整数拆分](https://leetcode-cn.com/problems/integer-break/)(难度中等) - 二维数组+最终解 - [10. 正则表达式匹配](https://leetcode-cn.com/problems/regular-expression-matching/)(难度困难)(注:本题同[剑指 Offer 19. 正则表达式匹配](https://leetcode-cn.com/problems/zheng-ze-biao-da-shi-pi-pei-lcof/))⭐️ ✅ - [72. 编辑距离](https://leetcode-cn.com/problems/edit-distance/)(难度困难)⭐️⭐️ ✅ - [42. 接雨水](https://leetcode-cn.com/problems/trapping-rain-water/)(难度困难)⭐️ ✅ - [0-1 背包问题](https://time.geekbang.org/column/article/74788?code=qCVA2cDQgRT3zHOy%2FZk21JRtNkN7CjYC31L8M0omrqQ) ⭐️ - [338. 比特位计数](https://leetcode-cn.com/problems/counting-bits/)(难度中等) ### 总结 - 看到题目后,首先要分析能不能用动态规划解,一般先试试用暴力穷举法能不能做出来,然后再看是否符合”一个模型三个特征“ - 绝大多数动态规划的问题都是一维和二维的,只有极少数会涉及到三维(比如[123. 买卖股票的最佳时机 III](https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-iii/)) - 动态规划解题五步曲 - 状态定义:这个往往跟题目中要求的最优解有关,一般是直接相关,也有个别情况并不是直接相关,比如 [300. 最长递增子序列](https://github.com/ShannonChenCHN/algorithm-and-data-structure/issues/23#issuecomment-813047425) - 状态转移方程:写状态转移方程时需要考虑到遍历的维度,也就是状态是怎么转移的,一般都是比较简单的 `i` `j` 递增,但是有些特殊情况也要具体分析,比如 [5. 最长回文子串]() 这一题 - 状态初始化:写完状态转移方程之后,还需要考虑到一些边界条件,也就是状态初始化 - 返回结果 - 空间优化:AC 之后,再看看是否有空间优化的可能,一般情况下二维数组可以优化成一维数组(画矩阵表),一维数组可以优化成两个非集合类型的变量 - 写完之后,一定要自己跑几个 case 验证一下,注意各种边界条件 - 字符串比较求最优解这类问题一般都可以用动态规划求解,值得注意的是,一般定义状态时会把`dp[i][j]`表示前 `i`, `j` 个字符串的状态,但是在遍历字符串时一定要记得前 `i` 个字符串的最后一个字符是第 `i-1` 位而不是第 `i` 位。比如 [10. 正则表达式匹配](https://github.com/ShannonChenCHN/algorithm-and-data-structure/issues/23#issuecomment-821825057)
题目列表
总结
ij递增,但是有些特殊情况也要具体分析,比如 5. 最长回文子串 这一题dp[i][j]表示前i,j个字符串的状态,但是在遍历字符串时一定要记得前i个字符串的最后一个字符是第i-1位而不是第i位。比如 10. 正则表达式匹配