动态规划总结
线性动态规划问题总结
打家劫舍总结
最大子数组和总结
dp[i] 依赖于前面一个或者两个状态
dp[i] 依赖于前面多个状态
注意:子序列可以不连续
dp[i] 带有一个或者多个维度
输入为两个数组或者两个字符串
lc 10【剑指 19】【top100】:正则表达式匹配
https://leetcode.cn/problems/regular-expression-matching/
保证每次出现字符 * 时,前面都匹配到有效的字符
if s[i-1]=p[j-2] or p[j-2]‘.’:#注意".*"的情况
输入为矩阵
[i,j]为起点看[i+1][j]、[i][j+1]和[i+1][j+1]状态
[i,j]为终点看[i-1][j]、[i][j-1]和[i-1][j-1]状态
区间动态规划问题总结
例如,回文串问题
背包系列问题总结
线性动态规划问题:
一、输入为一个数组或者一个字符串:
(1). dp[i] 依赖于前面一个或者两个状态计算得到
力扣 53. 最大子序和
力扣 91. 解码方法
力扣 152. 乘积最大子数组
力扣 376. 摆动序列
力扣 198. 打家劫舍
力扣 213. 打家劫舍 II
【新增】力扣 740. 删除并获得点数
力扣 509. 斐波那契数
力扣 70. 爬楼梯问题
力扣 746. 使用最小花费爬楼梯
【新增】力扣 413. 等差数列划分
【新增】力扣 918. 环形子数组的最大和
(2). dp[i] 依赖于前面多个状态计算得到
力扣 300. 最长递增子序列 - Longest Increasing Subsequence (LIS)
力扣 354. 俄罗斯套娃信封问题
力扣 32. 最长有效括号
力扣 139. 单词拆分
【新增】力扣 673. 最长递增子序列的个数
【新增】力扣 368. 最大整除子集
(3). dp[i] 带有一个或者多个维度
【新增】力扣 256. 粉刷房子
【新增】力扣 410. 分割数组的最大值
【新增】力扣 813. 最大平均值和的分组
【新增】力扣 1027. 最长等差数列
【新增】力扣 873. 最长的斐波那契子序列的长度
【新增】力扣 1230. 抛掷硬币
力扣 121. 买卖股票的最佳时机
力扣 122. 买卖股票的最佳时机 II
力扣 123. 买卖股票的最佳时机 III
力扣 188. 买卖股票的最佳时机 IV
力扣 309. 最佳买卖股票时机含冷冻期
力扣 714. 买卖股票的最佳时机含手续费
二、输入为两个数组或者两个字符串:
(1). 经典 LCS 问题
力扣 1143. 最长公共子序列(Longest Common Subsequence) (LCS)
力扣 718. 最长重复子数组
【新增】力扣 583. 两个字符串的删除操作
【新增】力扣 712. 两个字符串的最小ASCII删除和
(2). 字符串匹配问题
力扣 10. 正则表达式匹配
力扣 44. 通配符匹配
力扣 72. 编辑距离
(3). 其他
力扣 97. 交错字符串
【新增】力扣 115. 不同的子序列
三、输入为矩阵:
力扣 64. 最小路径和
力扣 62. 不同路径
力扣 63. 不同路径 II
力扣 120. 三角形最小路径和
力扣 97. 交错字符串
【新增】力扣 931. 下降路径最小和
力扣 221. 最大正方形
区间动态规划问题:
一、回文问题
力扣 5. 最长回文子串
力扣 131. 分割回文串
力扣 516. 最长回文子序列
力扣 647. 回文子串
【新增】力扣 132. 分割回文串 II
【新增】力扣 1312. 让字符串成为回文串的最少插入次数
二、其他
力扣 486. 预测赢家
【新增】力扣 312. 戳气球
背包系列问题:
一、0-1 背包问题
力扣 416. 分割等和子集
力扣 494. 目标和
【新增】力扣 1049. 最后一块石头的重量 II
二、完全/多重背包问题
力扣 139. 单词拆分
力扣 279. 完全平方数
力扣 322. 零钱兑换
力扣 518. 零钱兑换 II
力扣 377. 组合总和 Ⅳ
三、二维费用背包
力扣 474. 一和零
【新增】力扣 879. 盈利计划