力扣中的DP问题分类汇总,总结得挺全的,题目前面的序号就是在力扣中的序号,原文链接:知乎专栏花朝月夕:[力扣] DP问题分类汇总
[力扣] DP问题分类汇总
文章目录
1. 线性DP
最经典单串:
300.最长上升子序列 (LIS)
最经典双串:
1143.最长公共子序列 (LCS)
经典问题:
120.三角形最小路径和
53.最大子序和
152.乘积最大子数组
887.鸡蛋掉落 (DP+二分)
354.俄罗斯套娃信封问题 (隐晦的LIS)
打家劫舍系列: (打家劫舍3 是树形DP)
198.打家劫舍
213.打家劫舍 II
股票系列:
121.买卖股票的最佳时机
122.买卖股票的最佳时机 II
123.买卖股票的最佳时机 III
188.买卖股票的最佳时机 IV
309.最佳买卖股票时机含冷冻期
714.买卖股票的最佳时机含手续费
字符串匹配系列
72.编辑距离
44.通配符匹配
10.正则表达式匹配
2. 区间DP
516.最长回文子序列
730.统计不同回文子字符串
1039.多边形三角剖分的最低得分
664.奇怪的打印机
312.戳气球
3. 背包DP
416.分割等和子集 (01背包-要求恰好取到背包容量)
494.目标和 (01背包-求方案数)
322.零钱兑换 (完全背包)
518.零钱兑换 II (完全背包-求方案数)
474.一和零 (二维费用背包)
4. 树形DP
124.二叉树中的最大路径和
1245.树的直径 (邻接表上的树形DP)
543.二叉树的直径
333.最大 BST 子树
337.打家劫舍 III
5. 状态压缩DP
464.我能赢吗
526.优美的排列
935.骑士拨号器
1349.参加考试的最大学生数
6. 数位DP
233.数字 1 的个数
902.最大为 N 的数字组合
1015.可被 K 整除的最小整数
7. 计数型DP
计数型DP都可以以组合数学的方法写出组合数,然后dp求组合数
62.不同路径
63.不同路径 II
96.不同的二叉搜索树 (卡特兰数)
1259.不相交的握手 (卢卡斯定理求大组合数模质数)
8. 递推型DP
所有线性递推关系都可以用矩阵快速幂做,可以O(logN),最典型是斐波那契数列
70.爬楼梯
509.斐波那契数
935.骑士拨号器
957.N 天后的牢房
1137.第 N 个泰波那契数
9. 概率型DP
求概率,求数学期望
808.分汤
837.新21点
10. 博弈型DP
策梅洛定理,SG定理,minimax
翻转游戏
293.翻转游戏
294.翻转游戏 II
Nim游戏
292.Nim 游戏
石子游戏
877.石子游戏
1140.石子游戏 II
井字游戏
348.判定井字棋胜负
794.有效的井字游戏
1275.找出井字棋的获胜者
11. 记忆化搜索
本质是 dfs + 记忆化,用在状态的转移方向不确定的情况
329.矩阵中的最长递增路径
576.出界的路径数