-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Labels
Description
题目列表
- 斐波那契同类问题
- 剑指 Offer 10- I. 斐波那契数列⭐️ ✅
- 70. 爬楼梯⭐️ ✅
- 子序列/子数组/子串
- 300. 最长递增子序列(难度中等)⭐️⭐️ ✅
- 152. 乘积最大子数组 ✅
- 53. 最大子序和(注:本题同剑指 Offer 42. 连续子数组的最大和)⭐️ ✅
- 1143. 最长公共子序列(难度中等)⭐️ ✅
- 5. 最长回文子串(难度中等)⭐️ ✅
- 392. 判断子序列
- 股票问题系列通解(转载翻译)⭐️
- 121. 买卖股票的最佳时机(注:本题同剑指 Offer 63. 股票的最大利润)✅
- 122. 买卖股票的最佳时机 II ✅
- 123. 买卖股票的最佳时机 III(难度困难)
- 188. 买卖股票的最佳时机 IV(难度困难)
- 309. 最佳买卖股票时机含冷冻期(难度中等)
- 714. 买卖股票的最佳时机含手续费(难度中等)
- 路径条数和路径和的问题
- 120. 三角形最小路径和(难度中等)⭐️⭐️ ✅
- 64. 最小路径和(难度中等)⭐️⭐️ ✅
- 62. 不同路径(难度中等)
- 63. 不同路径 II(难度中等)
- 剑指 Offer 47. 礼物的最大价值(难度中等)
- 一维数组+最优解
- 322. 零钱兑换(难度中等)⭐️⭐️ ✅
- 198. 打家劫舍(难度中等)⭐️ ✅
- 剑指 Offer 14- I. 剪绳子(难度中等)
- 343. 整数拆分(难度中等)
- 二维数组+最终解
- 10. 正则表达式匹配(难度困难)(注:本题同剑指 Offer 19. 正则表达式匹配)⭐️ ✅
- 72. 编辑距离(难度困难)⭐️⭐️ ✅
- 42. 接雨水(难度困难)⭐️ ✅
- 0-1 背包问题 ⭐️
- 338. 比特位计数(难度中等)
总结
- 看到题目后,首先要分析能不能用动态规划解,一般先试试用暴力穷举法能不能做出来,然后再看是否符合”一个模型三个特征“
- 绝大多数动态规划的问题都是一维和二维的,只有极少数会涉及到三维(比如123. 买卖股票的最佳时机 III)
- 动态规划解题五步曲
- 状态定义:这个往往跟题目中要求的最优解有关,一般是直接相关,也有个别情况并不是直接相关,比如 300. 最长递增子序列
- 状态转移方程:写状态转移方程时需要考虑到遍历的维度,也就是状态是怎么转移的,一般都是比较简单的
ij递增,但是有些特殊情况也要具体分析,比如 5. 最长回文子串 这一题 - 状态初始化:写完状态转移方程之后,还需要考虑到一些边界条件,也就是状态初始化
- 返回结果
- 空间优化:AC 之后,再看看是否有空间优化的可能,一般情况下二维数组可以优化成一维数组(画矩阵表),一维数组可以优化成两个非集合类型的变量
- 写完之后,一定要自己跑几个 case 验证一下,注意各种边界条件
- 字符串比较求最优解这类问题一般都可以用动态规划求解,值得注意的是,一般定义状态时会把
dp[i][j]表示前i,j个字符串的状态,但是在遍历字符串时一定要记得前i个字符串的最后一个字符是第i-1位而不是第i位。比如 10. 正则表达式匹配
Reactions are currently unavailable