Hello everyone, I am a Chinese noob programmer. I have practiced questions on leetcode.com for 2 years. During this time, I studied a lot from many Great Gods' articles. After worship, I always wanted to write an article as they did, and now I take the courage to write my first article here.
This is an article summarizing topics related to dynamic programming. Its main inspiration comes from these two articles: Dynamic Programming Patterns and 怎样学好动态规划? - 穷码农的回答 - 知乎. DP is always a very difficult problem for me and lately, I have done dozens of questions to improve my DP skills. But the DP problem is so flexible that random practice has little effect. Therefore, I made further improvements based on these two articles and summarize some typical topics of DP problem. I hope this article can help you.
In this article, all problems come from leetcode.com and leetcode-cn.com which is a Chinese version of leetcode.com. By the way, because I am Chinese, I attached the Chinese translation after the English topics so that I can use this article more convenient in the future. Moreover, can anyone tell me how to create a table of contents? I wrote this article with VSCode and attempted many extensions to do this but all of them failed. I will be very grateful if you can tell me a way to achieve this function.
I will continue practicing DP problems on leetcode.com and will keep updating this article. If you have any better suggestions or supplements, welcome to put them in the comment area and @me. Now the main text begins.
1. Number Tower,数塔
-
118. Pascal's Triangle
(Easy)
、118. 杨辉三角(简单)
-
119. Pascal's Triangle II
(Easy)
、119. 杨辉三角 II(简单)
-
64. Minimum Path Sum
(Medium)
、64. 最小路径和(中等)
-
120. Triangle
(Medium)
、120. 三角形最小路径和(中等)
-
931. Minimum Falling Path Sum
(Medium)
、931. 下降路径最小和(中等)
-
1289. Minimum Falling Path Sum II
(hard)
、1289. 下降路径最小和 II(困难)
-
1301. Number of Paths with Max Score
(hard)
、1301. 最大得分的路径数目(困难)
2. Fibonacci Numbers,斐波那契数列
- Fibonacci numbers,斐波那契数列问题
-
509. Fibonacci Number
(Easy)
、509. 斐波那契数(简单)
-
1137. N-th Tribonacci Number
(Easy)
、1137. 第 N 个泰波那契数(简单)
-
509. Fibonacci Number
- Staircase,爬楼梯问题
-
70. Climbing Stairs
(Easy)
、70. 爬楼梯(简单)
-
746. Min Cost Climbing Stairs
(Easy)
、746. 使用最小花费爬楼梯(简单)
-
70. Climbing Stairs
- House thief,偷房子问题
-
198. House Robber
(Easy)
、198. 打家劫舍(简单)
-
213. House Robber II
(Medium)
、213. 打家劫舍 II(中等)
-
198. House Robber
3. Memory Search,记忆化搜索
-
139. Word Break
Medium
、139. 单词拆分中等
-
140. Word Break II
Hard
、140. 单词拆分 II困难
-
329. Longest Increasing Path in a Matrix
Hard
、329. 矩阵中的最长递增路径困难
-
1857. Largest Color Value in a Directed Graph
Hard
、1857. 有向图中最大颜色值困难
4. 0/1 Knapsack, 0/1 背包
- Equal Subset Sum Partition,相等子集划分问题
-
416. Partition Equal Subset Sum
(Medium)
、416. 分割等和子集(中等)
-
416. Partition Equal Subset Sum
- Subset Sum,子集和问题
-
494. Target Sum
(Medium)
、494. 目标和(中等)
-
494. Target Sum
- Minimum Subset Sum Difference,子集和的最小差问题
-
1049. Last Stone Weight II
(Medium)
、1049. 最后一块石头的重量 II(中等)
-
1049. Last Stone Weight II
- Other,其它
5. Unbounded Knapsack,无限(完全)背包
- Coin Change,换硬币问题
-
322. Coin Change
(Medium)
、322. 零钱兑换(中等)
-
518. Coin Change 2
(Medium)
、518. 零钱兑换 II(中等)
-
322. Coin Change
- Others,其它
-
377. Combination Sum IV
(Medium)
、377. 组合总和 Ⅳ(中等)
-
638. Shopping Offers
(Medium)
、638. 大礼包(中等)
-
1449. Form Largest Integer With Digits That Add up to Target
(Hard)
、1449. 数位成本和为目标值的最大数字(困难)
-
377. Combination Sum IV
6. Counting DP,计数 DP
-
62. Unique Paths
(Medium)
、62. 不同路径(中等)
-
63. Unique Paths II
(Medium)
、63. 不同路径 II(中等)
-
91. Decode Ways
(Medium)
、91. 解码方法(中等)
-
576. Out of Boundary Paths
(Medium)
、576. 出界的路径数(中等)
-
790. Domino and Tromino Tiling
(Medium)
、790. 多米诺和托米诺平铺(中等)
-
935. Knight Dialer
(Medium)
、935. 骑士拨号器(中等)
-
1155. Number of Dice Rolls With Target Sum
(Medium)
、1155. 掷骰子的 N 种方法(中等)
-
1641. Count Sorted Vowel Strings
(Medium)
、1641. 统计字典序元音字符串的数目(中等)
-
1220. Count Vowels Permutation
(Hard)
、1220. 统计元音字母序列的数目(困难)
-
1223. Dice Roll Simulation
(Medium)
、1223. 掷骰子模拟(中等)
-
552. Student Attendance Record II
(Hard)
、552. 学生出勤记录 II(困难)
-
1269. Number of Ways to Stay in the Same Place After Some Steps
(Hard)
、1269. 停在原地的方案数(困难)
-
1420. Build Array Where You Can Find The Maximum Exactly K Comparisons
(Hard)
、1420. 生成数组(困难)
-
1575. Count All Possible Routes
(Hard)
、1575. 统计所有可行路径(困难)
-
1639. Number of Ways to Form a Target String Given a Dictionary
(Hard)
、5542. 通过给定词典构造目标字符串的方案数(困难)
-
1866. Number of Ways to Rearrange Sticks With K Sticks Visible
(Hard)
、1866. 恰有 K 根木棍可以看到的排列数目(困难)
7. Probability DP,概率 DP
-
688. Knight Probability in Chessboard
(Medium)
、688-cn. “马”在棋盘上的概率(中等)
-
808. Soup Servings
(Medium)
、808. 分汤(中等)
8. Tree DP,树状 DP
-
96. Unique Binary Search Trees
(Medium)
、96. 不同的二叉搜索树(中等)
-
823. Binary Trees With Factors
(Medium)
、823. 带因子的二叉树(中等)
-
1130. Minimum Cost Tree From Leaf Values
(Medium)
、1130. 叶值的最小代价生成树(中等)
-
968. Binary Tree Cameras
(Hard)
、968. 监控二叉树(困难)
9. Optimal Solution,最优解问题
- Math,数学相关
-
279. Perfect Squares
(Medium)
、279. 完全平方数(中等)
-
368. Largest Divisible Subset
(Medium)
、368. 最大整除子集(中等)
-
646. Maximum Length of Pair Chain
(Medium)
、646. 最长数对链(中等)
-
650. 2 Keys Keyboard
(Medium)
、650. 只有两个键的键盘(中等)
-
801. Minimum Swaps To Make Sequences Increasing
(Medium)
、801. 使序列递增的最小交换次数(中等)
-
813. Largest Sum of Averages
(Medium)
、813. 最大平均值和的分组(中等)
-
1262. Greatest Sum Divisible by Three
(Medium)
、1262. 可被三整除的最大和(中等)
-
1537. Get the Maximum Score
(Hard)
、1537. 最大得分(困难)
-
279. Perfect Squares
- Buy and Sell Stock,股票买卖问题
-
309. Best Time to Buy and Sell Stock with Cooldown
(Medium)
、309. 最佳买卖股票时机含冷冻期(中等)
-
714. Best Time to Buy and Sell Stock with Transaction Fee
(Medium)
、714. 买卖股票的最佳时机含手续费(中等)
-
983. Minimum Cost For Tickets
(Medium)
、983. 最低票价(中等)
-
123. Best Time to Buy and Sell Stock III
(Hard)
、123. 买卖股票的最佳时机 III(困难)
-
188. Best Time to Buy and Sell Stock IV
(Hard)
、188. 买卖股票的最佳时机 IV(困难)
-
309. Best Time to Buy and Sell Stock with Cooldown
- Paint House,粉刷房子问题
-
256. Paint House
(Easy)
、256. 粉刷房子(简单)
-
265. Paint House II
(Hard)
、265. 粉刷房子 II(困难)
-
1473. Paint House III
(Hard)
、1473. 给房子涂色 III(困难)
-
256. Paint House
- Job Schedule,工作计划问题
- Minimum Number of Operations,最少操作次数问题
-
1824. Minimum Sideway Jumps
(Medium)
、1824. 最少侧跳次数(中等)
-
1187. Make Array Strictly Increasing
(Hard)
、1187. 使数组严格递增(困难)
-
514. Freedom Trail
(Hard)
、514. *之路(困难)
-
1787. Make the XOR of All Segments Equal to Zero
(Hard)
、1787. 使所有区间的异或结果为零(困难)
-
1883. Minimum Skips to Arrive at Meeting On Time
(Hard)
、1883. 准时抵达会议现场的最小跳过休息次数(困难)
-
1824. Minimum Sideway Jumps
10. Can I Win? 博弈 DP
-
292. Nim Game
(Easy)
、292. Nim 游戏(简单)
-
1025. Divisor Game
(Easy)
、1025. 除数博弈(简单)
-
464. Can I Win
(Medium)
、464. 我能赢吗(中等)
-
486. Predict the Winner
(Medium)
、486. 预测赢家(中等)
-
877. Stone Game
(Medium)
、877. 石子游戏(中等)
-
1140. Stone Game II
(Medium)
、1140. 石子游戏 II(中等)
-
1406. Stone Game III
(Hard)
、1406. 石子游戏 III(困难)
-
1510. Stone Game IV
(Hard)
、1510. 石子游戏 IV(困难)
11. Interval DP,区间 DP
- Intervals Merge,区间合并
-
312. Burst Balloons
(Hard)
、312. 戳气球(困难)
-
546. Remove Boxes
(Hard)
、546. 移除盒子(困难)
-
664. Strange Printer
(Hard)
、664. 奇怪的打印机(困难)
-
1478. Allocate Mailboxes
(Hard)
、1478. 安排邮筒(困难)
-
1547. Minimum Cost to Cut a Stick
(Hard)
、1547. 切棍子的最小成本(困难)
-
1563. Stone Game V
(Hard)
、1563. 石子游戏 V(困难)
-
312. Burst Balloons
- Triangulation,三角剖分
- Rectangle Segmentation,矩形分割
-
221. Maximal Square
(Medium)
、221. 最大正方形(中等)
-
1139. Largest 1-Bordered Square
(Medium)
、1139. 最大的以 1 为边界的正方形(中等)
-
1277. Count Square Submatrices with All Ones
(Medium)
、1277. 统计全为 1 的正方形子矩阵(中等)
-
85. Maximal Rectangle
(Hard)
、85. 最大矩形(困难)
-
221. Maximal Square
12. Subsequence/Substring,子序列/子字符串
12.1. Longest Subsequence/Substring,最长子序列/子字符串
- Longest Common Substring,最长公共子串
-
718. Maximum Length of Repeated Subarray
(Medium)
、718. 最长重复子数组(中等)
-
718. Maximum Length of Repeated Subarray
- Longest Common Subsequence,最长公共子序列
-
1035. Uncrossed Lines
(Medium)
、1035. 不相交的线(中等)
-
1143. Longest Common Subsequence
(Medium)
、1143. 最长公共子序列(中等)
-
1458. Max Dot Product of Two Subsequences
(Hard)
、1458. 两个子序列的最大点积(困难)
-
1035. Uncrossed Lines
- Longest Increasing Subsequence,最长上升子序列
-
674. Longest Continuous Increasing Subsequence
(Easy)
、674. 最长连续递增序列(简单)
-
300. Longest Increasing Subsequence
(Medium)
、300. 最长上升子序列(中等)
-
673. Number of Longest Increasing Subsequence
(Medium)
、673. 最长递增子序列的个数(中等)
-
354. Russian Doll Envelopes
(Hard)
、354. 俄罗斯套娃信封问题(困难)
-
1626. Best Team With No Conflicts
(Hard)
、1626. 无矛盾的最佳球队(困难)
-
674. Longest Continuous Increasing Subsequence
- Shortest Common Super-sequence,最短公共超级子序列
- Others,其它
12.2. Palindromic Subsequence/Substring,回文子序列/子字符串
- Longest Palindromic Subsequence,最长回文子序列
- Longest Palindromic Substring,最长回文子字符串
-
5. Longest Palindromic Substring
(Medium)
、5. 最长回文子串(中等)
-
5. Longest Palindromic Substring
- Count Palindromic Subsequences/Substrings,回文子序列/子字符串的个数
-
647. Palindromic Substrings
(Medium)
、647. 回文子串(中等)
-
730. Count Different Palindromic Subsequences
(Hard)
、730. 统计不同回文子字符串(困难)
-
647. Palindromic Substrings
- Palindromic Partitioning,回文分割
-
131. Palindrome Partitioning
(Medium)
、131. 分割回文串(中等)
-
132. Palindrome Partitioning II
(Hard)
、132. 分割回文串 II(困难)
-
1278. Palindrome Partitioning III
(Hard)
、1278. 分割回文串 III(困难)
-
1745. Palindrome Partitioning IV
(Hard)
、1745. 回文串分割 IV(困难)
-
131. Palindrome Partitioning
13. String,字符串上的动态规划
13.1. String Transform,字符串变换
-
583. Delete Operation for Two Strings
(Medium)
、583. 两个字符串的删除操作(中等)
-
712. Minimum ASCII Delete Sum for Two Strings
(Medium)
、712. 两个字符串的最小 ASCII 删除和(中等)
-
72. Edit Distance
(Hard)
、72. 编辑距离(困难)
-
97. Interleaving String
(Hard)
、97. 交错字符串(困难)
-
1312. Minimum Insertion Steps to Make a String Palindrome
(Hard)
、1312. 让字符串成为回文串的最少插入次数(困难)
13.2. Regular Expression Matching,正则表达式匹配
-
678. Valid Parenthesis String
(Medium)
、678. 有效的括号字符串(中等)
-
10. Regular Expression Matching
(Hard)
、10. 正则表达式匹配(困难)
-
44. Wildcard Matching
(Hard)
、44. 通配符匹配(困难)
-
639. Decode Ways II
(Hard)
、639. 解码方法 2(困难)
14. Multi-start state,多起始状态
-
741. Cherry Pickup
(Hard)
、741. 摘樱桃(困难)
-
1320. Minimum Distance to Type a Word Using Two Fingers
(Hard)
、1320. 二指输入的的最小距离(困难)
-
1463. Cherry Pickup II
(Hard)
、1463. 摘樱桃 II(困难)
15. DP Optimizition,DP 优化
-
837. New 21 Game
(Medium)
、837. 新 21 点(中等)
-
1340. Jump Game V
(Hard)
、1340. 跳跃游戏 V(困难)
-
1696. Jump Game VI
(Medium)
、1696. 跳跃游戏 VI(中等)
-
1416. Restore The Array
(Hard)
、1416. 恢复数组(困难)
-
1425. Constrained Subset Sum
(Hard)
、1425. 带限制的子序列和(困难)
-
1434. Number of Ways to Wear Different Hats to Each Other
(Hard)
、1434. 每个人戴不同帽子的方案数(困难)
-
1444. Number of Ways of Cutting a Pizza
(Hard)
、1444. 切披萨的方案数(困难)
-
1621. Number of Sets of K Non-Overlapping Line Segments
(Hard)
、1621. 5527. 大小为 K 的不重叠线段的数目(Hard)
15. Bitmask DP,状态压缩 DP
-
1125. Smallest Sufficient Team
(Hard)
、1125. 最小的必要团队(困难)
-
1349. Maximum Students Taking Exam
(Hard)
、1349. 参加考试的最大学生数(困难)
-
1655. Distribute Repeating Integers
(Hard)
、1655. 分配重复整数(困难)
-
1799. Maximize Score After N Operations
(Hard)
、1799. N 次操作后的最大分数和(困难)
-
1815. Maximum Number of Groups Getting Fresh Donuts
(Hard)
、1815. 得到新鲜甜甜圈的最多组数(困难)
-
1879. Minimum XOR Sum of Two Arrays
(Hard)
、1879. 两个数组最小的异或值之和(困难)
16. 轮廓线动态规划
-
1659. Maximize Grid Happiness
(Hard)
、1659. 最大化网格幸福感(困难)
Thanks for your browsing and best wishes to you.
leetcode动态规划题目总结的更多相关文章
-
[LeetCode] 动态规划入门题目
最近接触了动态规划这个厉害的方法,还在慢慢地试着去了解这种思想,因此就在LeetCode上面找了几道比较简单的题目练了练手. 首先,动态规划是什么呢?很多人认为把它称作一种"算法" ...
-
[leetcode]55.JumpGame动态规划题目:跳数游戏
/** * Given an array of non-negative integers, you are initially positioned at the first index of th ...
-
快速上手leetcode动态规划题
快速上手leetcode动态规划题 我现在是初学的状态,在此来记录我的刷题过程,便于以后复习巩固. 我leetcode从动态规划开始刷,语言用的java. 一.了解动态规划 我上网查了一下动态规划,了 ...
-
poj 动态规划题目列表及总结
此文转载别人,希望自己能够做完这些题目! 1.POJ动态规划题目列表 容易:1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 11 ...
-
POJ 动态规划题目列表
]POJ 动态规划题目列表 容易: 1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1208, 1276, 1322 ...
-
LeetCode高频题目(100)汇总-Java实现
LeetCode高频题目(100)汇总-Java实现 LeetCode高频题目(100)汇总-Java实现 目录 第01-50题 [Leetcode-easy-1] Two Sum [Le ...
-
[SinGuLaRiTy] 动态规划题目复习
[SinGuLaRiTy-1026] Copyright (c) SinGuLaRiTy 2017. All Rights Reserved. [UVA 1025] A Spy in the Metr ...
-
LeetCode算法题目解答汇总(转自四火的唠叨)
LeetCode算法题目解答汇总 本文转自<四火的唠叨> 只要不是特别忙或者特别不方便,最近一直保持着每天做几道算法题的规律,到后来随着难度的增加,每天做的题目越来越少.我的初衷就是练习, ...
-
LeetCode SQL题目(第一弹)
LeetCode SQL题目 注意:Leetcode上的SQL编程题都提供了数据表的架构程序,只需要将它贴入本地数据库即可调试自己编写的程序 不管是MS-SQL Server还是MySQL都需要登陆才 ...
随机推荐
-
Android6.0中的权限
Android6.0相比之前的Android版本有一个很大的不同点,就是动态的获取权限.之前我们需要什么权限只需要在Manifest文件中声明即可,在6.0中,又新增了运行时权限的动态检测. Andr ...
-
OC 单元测试学习笔记
UnitTest 编译异常汇总: 问题1 Check dependencies No architectures to compile for (ONLY_ACTIVE_ARCH=YES, activ ...
-
linux 系统权限 数字含义
摘抄: sudo chmod XXX dir_name XXX是你要设置的权限代号,第一位代表Owner,第二位代表Group,第三位代表Others XXX中0代表什么都不可以,1代表可执行,2代表 ...
-
IIS发布,图片和样式显示不了的问题
今天本地IIS部署在visual stuio 2013里运行成功的一个项目时,出现了样式和图片显示不了的情况,如下图 所有页面的样式和图片不显示,刚开始以为是发布之后的图片和样式的文件夹没有权限,可是 ...
-
bzoj 1412 [ZJOI2009]狼和羊的故事(最小割)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1412 [题意] 在一个n*m的格子中,将羊和狼隔开的最小代价. [思路] 最小割. 由 ...
-
&;lt;八&;gt;阅读&;lt;&;lt;大话设计模式&;gt;&;gt;该模型的外观
Facade模式其实很好理解,被表面的东西展示海报.内部的东西,你不知道(因为我们有一个好包).例如,外部和公司内部制度,5交互系统,此5互.那么第一种就是外部系统和5个系统都进行交互:另外一种就是做 ...
-
Idea构建maven项目
Idea构建maven项目: 步骤一: 步骤二: 自动导入Maven项目: 步骤三:增加web 二:搭建spring项目结构: 结构图: 网上都是一大堆的:自己也可以去搜:ssm pom.xml ...
-
asp.net网站服务器搭建之从零开始
asp.net网站服务器搭建之从零开始 一 IIS(Internet Information Services)安装: 1.选择"控制面板". 2.点"添加或删除程序 ...
-
切换 NPM 镜像源
转载:快速切换NPM源 我们介绍过cnpmjs.org和淘宝 npm 两个 NPM 镜像.除此之外,还有一些国外的 NPM 镜像.不同地区访问不同的镜像速度可能有差异,因此有时候需要切换 NPM 镜像 ...
-
BZOJ2673 [Wf2011]Chips Challenge 费用流 zkw费用流 网络流
https://darkbzoj.cf/problem/2673 有一个芯片,芯片上有N*N(1≤N≤40)个插槽,可以在里面装零件. 有些插槽不能装零件,有些插槽必须装零件,剩下的插槽随意. 要求装 ...