综述
动态规划每一个状态一定是由上一个状态推导出来,求最优解;贪心没有状态推导,从局部直接选最优
- 确定dp数组(dp table)以及下标的含义
- 确定递推公式
- dp数组如何初始化
- 确定遍历顺序
- 举例推导dp数组
相关题目
| 题目 | 思路 |
|---|---|
| 509. 斐波那契数 | dp |
| 70. 爬楼梯 | dp |
| 118. 杨辉三角 | 模拟 |
| 198. 打家劫舍 | dp |
| 213. 打家劫舍 II | 与198一样,需要判断第一间房偷不偷 |
| 279. 完全平方数 | 完全背包,注意初始赋值 |
| 322. 零钱兑换 | 思路和279一致 |
| 139. 单词拆分 | dp |
| 300. 最长递增子序列 | dp,理解dp[i]的含义 |
| 最长递增子串 | 1. 模拟 2. dp |
| 354. 俄罗斯套娃信封问题 | 转化为一维的最长递增子序列 |
| 152. 乘积最大子数组 | 不断更新当前元素前的最大值和最小值 |
| 416. 分割等和子集 | 转化为01背包问题 |
| 494. 目标和 | dp |
| k数之和 | 三维dp,定义好dp的意义 |
| 62. 不同路径 | 二维dp |
| 63. 不同路径 II | 二维dp |
| 64. 最小路径和 | 二维dp |
| 647. 回文子串 | 二维dp,注意三道题的区别 |
| 5. 最长回文子串 | 二维dp,注意三道题的区别 |
| 516. 最长回文子序列 | 二维dp,注意三道题的区别 |
| 1143. 最长公共子序列 | 如果字符相等;如果字符不相等 |
| 最长公共子串 | dp |
| 72. 编辑距离 | 注意增删改三种情况 |
| 53. 最大子数组和 | 注意连续子数组 |
| 121. 买卖股票的最佳时机 | 1. 贪心 2.dp(注意只能买卖一次) |
| 122. 买卖股票的最佳时机 II | dp(可以多次买卖) |
| 221. 最大正方形 | 结合画图可得状态转移方程 |
| 120. 三角形最小路径和 | 自底向上dp |