DOKICODE
书房

动态规划

动态规划把问题拆成更小的同类问题,先求出小问题的答案再组合起来,并把答案存下来避免重复计算。最难的是想清楚“状态”代表什么,代码本身往往不长。

这是体量最大的题单,20 章共 465 道题。从入门 DP 和网格 DP 开始,接着是背包、LCS 与 LIS、划分型与状态机 DP,再往后是区间、状压、数位、树形、图上、博弈与概率 DP,另外还有输出具体方案、跳跃游戏变形等专题。适合已经能熟练写递归、想按顺序把 DP 从头练一遍的人。

465 道题难度分 1262–312520 章节
进入书房

想有人陪你把这份题单做完吗?登录后进入书房,女主角会一次递给你一道题。

一、入门 DP

二、Grid DP

三、Knapsack DP

§3.5 Tree Knapsack(选做)选做

题目难度分
3562. 折扣价交易股票的最大利润2458

四、经典Linear DP

五、Partition DP

§5.1 判定能否划分

题目难度分
2369. 检查数组是否存在有效划分1780
139. 单词拆分未评分

六、State Machine DP

七、其他Linear DP

§7.6 多维 DP

题目难度分
2222. 选择建筑的方案数1657
2826. 将三个组排序1721
2400. 恰好移动 k 步到达某一位置的方法数目1751
1262. 可被三整除的最大和1762
3332. 旅客可以得到的最多点数1828
3176. 求出最长好子序列 I1849
1269. 停在原地的方案数1854
3250. 单调数组对的数目 I1898
3218. 切蛋糕的最小总开销 I未评分
3122. 使矩阵满足条件的最少操作次数1905
576. 出界的路径数未评分
403. 青蛙过河未评分
3725. 统计每一行选择互质整数的方案数1982
1223. 掷骰子模拟2008
1320. 二指输入的的最小距离2028
3366. 最小数组和2040
1575. 统计所有可行路径2055
3154. 到达第 K 级台阶的方案数2071
2318. 不同骰子序列的数目2090
3469. 移除所有数组元素的最小代价2112
2746. 字符串连接删减字母2126
1444. 切披萨的方案数2127
3320. 统计能获胜的出招序列数2153
3429. 粉刷房子 IV2166
2896. 执行操作使两个字符串相等2172
1420. 生成数组2176
3193. 统计逆序对的数目2266
1079. 活字印刷未评分
1866. 恰有 K 根木棍可以看到的排列数目2333
2312. 卖木头块2363
3177. 求出最长好子序列 II2365
1884. 鸡蛋掉落-两枚鸡蛋未评分
887. 鸡蛋掉落2377
920. 播放列表的数量2400
3336. 最大公约数相等的子序列数量2403
1388. 3n 块披萨2410
903. DI 序列的有效排列2433
1900. 最佳运动员的比拼回合2455
1531. 压缩字符串 II2576
1883. 准时抵达会议现场的最小跳过休息次数2588
964. 表示数字的最少运算符2594
3343. 统计平衡排列的数目2615
1787. 使所有区间的异或结果为零2640
3509. 最大化交错和为 K 的子序列乘积2703
3441. 变成好标题的最少代价2765
3539. 魔法序列的数组乘积之和2694
2060. 同源字符串检测2804
2809. 使数组和小于等于 x 的最少时间2979
3003. 执行操作后的最大分割数量3039
3225. 网格图操作后的最大分数3028

八、Interval DP

九、Bitmask DP

§9.3 旅行商问题(TSP)

题目难度分
943. 最短超级串2186

十、Digit DP

§10.2 统计合法元素的价值总和

题目难度分
233. 数字 1 的个数未评分
3753. 范围内总波动值 II2297

十一、优化 DP

§11.5 Trie优化 DP

题目难度分
139. 单词拆分未评分
2707. 字符串中的额外字符未评分
472. 连接词2300

十二、Tree DP

§12.2 树上最大独立集

题目难度分
337. 打家劫舍 III未评分
2646. 最小化旅行的价格总和2238
3544. 子树反转和2545

§12.3 树上最小支配集

题目难度分
968. 监控二叉树2124

十三、Graph DP

十四、博弈 DP

十五、机率/期望 DP

专题:输出具体方案(打印方案)

专题:前后缀分解

专题:前后缀分解

题目难度分
724. 寻找数组的中心下标未评分
1991. 找到数组的中间位置未评分
3707. 相等子字符串分数1262
2270. 分割数组的方案数1334
2256. 最小平均差1395
1422. 分割字符串的最大得分未评分
238. 除自身以外数组的乘积未评分
1493. 删掉一个元素以后全为 1 的最长子数组1423
845. 数组中的最长山脉1437
2012. 数组美丽值求和1468
2909. 元素和最小的山形三元组 II1479
2483. 商店的最少代价1495
1525. 字符串的好分割数目1500
3583. 统计特殊三元组1510
3354. 使数组元素等于零未评分
1930. 长度为 3 的不同回文子序列1533
2874. 有序三元组中的最大值 II1583
1664. 生成平衡数组的方案数1590
123. 买卖股票的最佳时机 III未评分
3698. 分割数组得到最小绝对差1649
3598. 相邻字符串之间的最长公共前缀1655
2222. 选择建筑的方案数1657
1031. 两个无重叠子数组的最大和1680
689. 三个无重叠子数组的最大和未评分
2420. 找到所有好下标1695
2100. 适合野炊的日子1702
926. 将字符串翻转到单调递增未评分
334. 递增的三元子序列未评分
1653. 使字符串平衡的最少删除次数1794
1186. 删除一次得到子数组最大和1799
3738. 替换至多一个元素后最长非递减子数组1811
42. 接雨水未评分
2711. 对角线上不同值的数量差未评分
1477. 找两个和为目标值且不重叠的子数组1851
1671. 得到山形数组的最少删除次数1913
2906. 构造乘积矩阵2075
3334. 数组的最大因子得分未评分
2167. 移除所有载有违禁货物车厢所需的最少时间2219
2484. 统计回文子序列数目2223
2163. 删除元素后和的最小差值2225
2565. 最少得分子序列2432
1995. 统计特殊四元组未评分
2552. 统计上升四元组2433
3302. 字典序最小的合法序列2474
3404. 统计特殊子序列的数目2445
3303. 第一个几乎相等子字符串的下标2509
3410. 删除所有值为某个元素后的最大子数组和2844
3003. 执行操作后的最大分割数量3039

专题:把 X 变成 Y

专题:跳跃游戏

其他

这是阶段二的第三份题单;多重背包与树上背包两个小节标为选做,留在进阶题单里,路线会继续沿着核心章节往前走。

难度分来自 zerotrac 的 LeetCode 竞赛评分。部分题目没有 zerotrac 分数,会标记为“未评分”。

进入书房