This commit is contained in:
youngyangyang04
2021-06-01 17:48:26 +08:00
parent 7b3f8ea4dd
commit 9dd0af1946
10 changed files with 200 additions and 49 deletions

View File

@ -112,14 +112,24 @@
(持续更新中..... (持续更新中.....
## 备战秋招
1. [选择方向的时候,我也迷茫了](https://mp.weixin.qq.com/s/ZCzFiAHZHLqHPLJQXNm75g)
2. [刷题就用库函数了,怎么了?](https://mp.weixin.qq.com/s/6K3_OSaudnHGq2Ey8vqYfg)
3. [关于实习,大家可能有点迷茫!](https://mp.weixin.qq.com/s/xcxzi7c78kQGjvZ8hh7taA)
4. [马上秋招了,慌得很!](https://mp.weixin.qq.com/s/7q7W8Cb2-a5U5atZdOnOFA)
5. [Carl看了上百份简历总结了这些](https://mp.weixin.qq.com/s/sJa87MZD28piCOVMFkIbwQ)
6. [面试中遇到了发散性问题.....](https://mp.weixin.qq.com/s/SSonDxi2pjkSVwHNzZswng)
## 数组 ## 数组
1. [数组过于简单,但你该了解这些!](./problems/数组理论基础.md) 1. [数组过于简单,但你该了解这些!](./problems/数组理论基础.md)
2. [数组:每次遇到二分法,都是一看就会,一写就废](./problems/0704.二分查找.md) 2. [数组:每次遇到二分法,都是一看就会,一写就废](./problems/0704.二分查找.md)
3. [数组:就移除个元素很难么?](./problems/0027.移除元素.md) 3. [数组:就移除个元素很难么?](./problems/0027.移除元素.md)
4. [数组:滑动窗口拯救了你](./problems/0209.长度最小的子数组.md) 4. [数组:有序数组的平方,还有序么?](./problems/0977.有序数组的平方.md)
5. [数组:这个循环可以转懵很多人!](./problems/0059.螺旋矩阵II.md) 5. [数组:滑动窗口拯救了你](./problems/0209.长度最小的子数组.md)
6. [数组:总结篇](./problems/数组总结篇.md) 6. [数组:这个循环可以转懵很多人!](./problems/0059.螺旋矩阵II.md)
7. [数组:总结篇](./problems/数组总结篇.md)
## 链表 ## 链表
@ -292,6 +302,7 @@
动态规划专题已经开始啦,来不及解释了,小伙伴们上车别掉队! 动态规划专题已经开始啦,来不及解释了,小伙伴们上车别掉队!
<img src='https://code-thinking.cdn.bcebos.com/pics/动态规划-总结大纲.jpg' width=500 alt='背包问题大纲'> </img></div>
1. [关于动态规划,你该了解这些!](./problems/动态规划理论基础.md) 1. [关于动态规划,你该了解这些!](./problems/动态规划理论基础.md)
2. [动态规划:斐波那契数](./problems/0509.斐波那契数.md) 2. [动态规划:斐波那契数](./problems/0509.斐波那契数.md)
3. [动态规划:爬楼梯](./problems/0070.爬楼梯.md) 3. [动态规划:爬楼梯](./problems/0070.爬楼梯.md)
@ -366,6 +377,7 @@
52. [为了绝杀编辑距离Carl做了三步铺垫你都知道么](./problems/为了绝杀编辑距离,卡尔做了三步铺垫.md) 52. [为了绝杀编辑距离Carl做了三步铺垫你都知道么](./problems/为了绝杀编辑距离,卡尔做了三步铺垫.md)
53. [动态规划:回文子串](./problems/0647.回文子串.md) 53. [动态规划:回文子串](./problems/0647.回文子串.md)
54. [动态规划:最长回文子序列](./problems/0516.最长回文子序列.md) 54. [动态规划:最长回文子序列](./problems/0516.最长回文子序列.md)
55. [动态规划总结篇](./problems/动态规划总结篇.md)
(持续更新中.... (持续更新中....
@ -390,12 +402,7 @@
[各类基础算法模板](https://github.com/youngyangyang04/leetcode/blob/master/problems/算法模板.md) [各类基础算法模板](https://github.com/youngyangyang04/leetcode/blob/master/problems/算法模板.md)
# 备战秋招
1. [技术比较弱,也对技术不感兴趣,如何选择方向?](https://mp.weixin.qq.com/s/ZCzFiAHZHLqHPLJQXNm75g)
2. [刷题就用库函数了,怎么了?](https://mp.weixin.qq.com/s/6K3_OSaudnHGq2Ey8vqYfg)
3. [关于实习,大家可能有点迷茫!](https://mp.weixin.qq.com/s/xcxzi7c78kQGjvZ8hh7taA)
4. [马上秋招了,慌得很!](https://mp.weixin.qq.com/s/7q7W8Cb2-a5U5atZdOnOFA)
# B站算法视频讲解 # B站算法视频讲解

View File

@ -29,17 +29,17 @@ https://leetcode-cn.com/problems/two-sum/
很明显暴力的解法是两层for循环查找时间复杂度是O(n^2)。 很明显暴力的解法是两层for循环查找时间复杂度是O(n^2)。
建议大家做这道题目之前,先做一下这两道 建议大家做这道题目之前,先做一下这两道
* [242. 有效的字母异位词](https://mp.weixin.qq.com/s/vM6OszkM6L1Mx2Ralm9Dig) * [242. 有效的字母异位词](https://mp.weixin.qq.com/s/ffS8jaVFNUWyfn_8T31IdA)
* [349. 两个数组的交集](https://mp.weixin.qq.com/s/N9iqAchXreSVW7zXUS4BVA) * [349. 两个数组的交集](https://mp.weixin.qq.com/s/aMSA5zrp3jJcLjuSB0Es2Q)
[242. 有效的字母异位词](https://mp.weixin.qq.com/s/vM6OszkM6L1Mx2Ralm9Dig) 这道题目是用数组作为哈希表来解决哈希问题,[349. 两个数组的交集](https://mp.weixin.qq.com/s/N9iqAchXreSVW7zXUS4BVA)这道题目是通过set作为哈希表来解决哈希问题。 [242. 有效的字母异位词](https://mp.weixin.qq.com/s/ffS8jaVFNUWyfn_8T31IdA) 这道题目是用数组作为哈希表来解决哈希问题,[349. 两个数组的交集](https://mp.weixin.qq.com/s/aMSA5zrp3jJcLjuSB0Es2Q)这道题目是通过set作为哈希表来解决哈希问题。
本题呢则要使用map那么来看一下使用数组和set来做哈希法的局限。 本题呢则要使用map那么来看一下使用数组和set来做哈希法的局限。
* 数组的大小是受限制的,而且如果元素很少,而哈希值太大会造成内存空间的浪费。 * 数组的大小是受限制的,而且如果元素很少,而哈希值太大会造成内存空间的浪费。
* set是一个集合里面放的元素只能是一个key而两数之和这道题目不仅要判断y是否存在而且还要记录y的下位置因为要返回x 和 y的下。所以set 也不能用。 * set是一个集合里面放的元素只能是一个key而两数之和这道题目不仅要判断y是否存在而且还要记录y的下位置因为要返回x 和 y的下。所以set 也不能用。
此时就要选择另一种数据结构map map是一种key value的存储结构可以用key保存数值用value在保存数值所在的下 此时就要选择另一种数据结构map map是一种key value的存储结构可以用key保存数值用value在保存数值所在的下
C++中map有三种类型 C++中map有三种类型
@ -51,13 +51,12 @@ C++中map有三种类型
std::unordered_map 底层实现为哈希表std::map 和std::multimap 的底层实现是红黑树。 std::unordered_map 底层实现为哈希表std::map 和std::multimap 的底层实现是红黑树。
同理std::map 和std::multimap 的key也是有序的这个问题也经常作为面试题考察对语言容器底层的理解。 更多哈希表的理论知识请看[关于哈希表,你该了解这些!](https://mp.weixin.qq.com/s/g8N6WmoQmsCUw3_BaWxHZA)。 同理std::map 和std::multimap 的key也是有序的这个问题也经常作为面试题考察对语言容器底层的理解。 更多哈希表的理论知识请看[关于哈希表,你该了解这些!](https://mp.weixin.qq.com/s/RSUANESA_tkhKhYe3ZR8Jg)。
**这道题目中并不需要key有序选择std::unordered_map 效率更高!** **这道题目中并不需要key有序选择std::unordered_map 效率更高!**
解题思路动画如下: 解题思路动画如下:
![](https://code-thinking.cdn.bcebos.com/gifs/1.两数之和.gif) ![](https://code-thinking.cdn.bcebos.com/gifs/1.两数之和.gif)

View File

@ -105,8 +105,7 @@ public:
时间复杂度O(n^2)。 时间复杂度O(n^2)。
C++代码代码如下:
## 双指针法C++代码
```C++ ```C++
class Solution { class Solution {
@ -163,13 +162,14 @@ public:
# 思考题 # 思考题
既然三数之和可以使用双指针法,我们之前讲过的[两数之和](https://mp.weixin.qq.com/s/uVAtjOHSeqymV8FeQbliJQ),可不可以使用双指针法呢?
既然三数之和可以使用双指针法,我们之前讲过的[1.两数之和](https://mp.weixin.qq.com/s/vaMsLnH-f7_9nEK4Cuu3KQ),可不可以使用双指针法呢?
如果不能,题意如何更改就可以使用双指针法呢? **大家留言说出自己的想法吧!** 如果不能,题意如何更改就可以使用双指针法呢? **大家留言说出自己的想法吧!**
两数之和 就不能使用双指针法,因为[两数之和](https://mp.weixin.qq.com/s/uVAtjOHSeqymV8FeQbliJQ)要求返回的是索引下表, 而双指针法一定要排序,一旦排序之后原数组的索引就被改变了。 两数之和 就不能使用双指针法,因为[1.两数之和](https://mp.weixin.qq.com/s/vaMsLnH-f7_9nEK4Cuu3KQ)要求返回的是索引下表, 而双指针法一定要排序,一旦排序之后原数组的索引就被改变了。
如果[两数之和](https://mp.weixin.qq.com/s/uVAtjOHSeqymV8FeQbliJQ)要求返回的是数值的话,就可以使用双指针法了。 如果[1.两数之和](https://mp.weixin.qq.com/s/vaMsLnH-f7_9nEK4Cuu3KQ)要求返回的是数值的话,就可以使用双指针法了。

View File

@ -8,6 +8,8 @@
## 72. 编辑距离 ## 72. 编辑距离
https://leetcode-cn.com/problems/edit-distance/
给你两个单词 word1 和 word2请你计算出将 word1 转换成 word2 所使用的最少操作数 。 给你两个单词 word1 和 word2请你计算出将 word1 转换成 word2 所使用的最少操作数 。
你可以对一个单词进行如下三种操作: 你可以对一个单词进行如下三种操作:
@ -16,23 +18,23 @@
* 删除一个字符 * 删除一个字符
* 替换一个字符 * 替换一个字符
示例 1 示例 1
输入word1 = "horse", word2 = "ros" 输入word1 = "horse", word2 = "ros"
输出3 输出3
解释: 解释:
horse -> rorse (将 'h' 替换为 'r') horse -> rorse (将 'h' 替换为 'r')
rorse -> rose (删除 'r') rorse -> rose (删除 'r')
rose -> ros (删除 'e') rose -> ros (删除 'e')
示例 2 示例 2
输入word1 = "intention", word2 = "execution" 输入word1 = "intention", word2 = "execution"
输出5 输出5
解释: 解释:
intention -> inention (删除 't') intention -> inention (删除 't')
inention -> enention (将 'i' 替换为 'e') inention -> enention (将 'i' 替换为 'e')
enention -> exention (将 'n' 替换为 'x') enention -> exention (将 'n' 替换为 'x')
exention -> exection (将 'n' 替换为 'c') exention -> exection (将 'n' 替换为 'c')
exection -> execution (插入 'u') exection -> execution (插入 'u')
   
提示: 提示:

View File

@ -16,7 +16,7 @@
题目数据保证答案符合 32 位带符号整数范围。 题目数据保证答案符合 32 位带符号整数范围。
![115.不同的子序列示例](https://code-thinking.cdn.bcebos.com/pics/115.%E4%B8%8D%E5%90%8C%E7%9A%84%E5%AD%90%E5%BA%8F%E5%88%97%E7%A4%BA%E4%BE%8B.jpg) ![115.不同的子序列示例](https://code-thinking.cdn.bcebos.com/pics/115.不同的子序列示例.jpg)
提示: 提示:

View File

@ -16,14 +16,14 @@
返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。 返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。
示例 1 示例 1
输入:[7,1,5,3,6,4] 输入:[7,1,5,3,6,4]
输出5 输出5
解释:在第 2 天(股票价格 = 1的时候买入在第 5 天(股票价格 = 6的时候卖出最大利润 = 6-1 = 5 。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。 解释:在第 2 天(股票价格 = 1的时候买入在第 5 天(股票价格 = 6的时候卖出最大利润 = 6-1 = 5 。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。
示例 2 示例 2
输入prices = [7,6,4,3,1] 输入prices = [7,6,4,3,1]
输出0 输出0
解释:在这种情况下, 没有交易完成, 所以最大利润为 0。 解释:在这种情况下, 没有交易完成, 所以最大利润为 0。
@ -33,7 +33,7 @@
这道题目最直观的想法,就是暴力,找最优间距了。 这道题目最直观的想法,就是暴力,找最优间距了。
``` ```C++
class Solution { class Solution {
public: public:
int maxProfit(vector<int>& prices) { int maxProfit(vector<int>& prices) {

View File

@ -101,9 +101,9 @@ dp[i][4] = max(dp[i - 1][4], dp[i - 1][3] + prices[i]);
所以dp[0][2] = 0; 所以dp[0][2] = 0;
第0天第二次买入操作初始值应该是多少呢 第0天第二次买入操作初始值应该是多少呢应该不少同学疑惑,第一次还没买入呢,怎么初始化第二次买入呢?
不用管第几次,现在手头上没有现金,只要买入,现金就做相应的减少。 第二次买入依赖于第一次卖出的状态其实相当于第0天第一次买入了第一次卖出了然后在买入一次第二次买入那么现在手头上没有现金,只要买入,现金就做相应的减少。
所以第二次买入操作初始化为dp[0][3] = -prices[0]; 所以第二次买入操作初始化为dp[0][3] = -prices[0];

View File

@ -5,7 +5,6 @@
<a href="https://mp.weixin.qq.com/s/QVF6upVMSbgvZy8lHZS3CQ"><img src="https://img.shields.io/badge/知识星球-代码随想录-blue" alt=""></a> <a href="https://mp.weixin.qq.com/s/QVF6upVMSbgvZy8lHZS3CQ"><img src="https://img.shields.io/badge/知识星球-代码随想录-blue" alt=""></a>
</p> </p>
<p align="center"><strong>欢迎大家<a href="https://mp.weixin.qq.com/s/tqCxrMEU-ajQumL1i8im9A">参与本项目</a>,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!</strong></p> <p align="center"><strong>欢迎大家<a href="https://mp.weixin.qq.com/s/tqCxrMEU-ajQumL1i8im9A">参与本项目</a>,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!</strong></p>
# 动态规划分割等和子集可以用01背包
## 416. 分割等和子集 ## 416. 分割等和子集
@ -29,6 +28,10 @@
输出: false 输出: false
解释: 数组不能分割成两个元素和相等的子集. 解释: 数组不能分割成两个元素和相等的子集.
提示:
* 1 <= nums.length <= 200
* 1 <= nums[i] <= 100
## 思路 ## 思路
这道题目初步看,是如下两题几乎是一样的,大家可以用回溯法,解决如下两题 这道题目初步看,是如下两题几乎是一样的,大家可以用回溯法,解决如下两题
@ -174,7 +177,7 @@ public:
这道题目就是一道01背包应用类的题目需要我们拆解题目然后套入01背包的场景。 这道题目就是一道01背包应用类的题目需要我们拆解题目然后套入01背包的场景。
01背包相对于本题主要要理解题目中物品是nums[i]重量是nums[i]i价值也是nums[i]背包体积是sum/2。 01背包相对于本题主要要理解题目中物品是nums[i]重量是nums[i]价值也是nums[i]背包体积是sum/2。
看代码的话就可以发现基本就是按照01背包的写法来的。 看代码的话就可以发现基本就是按照01背包的写法来的。

View File

@ -128,7 +128,7 @@ public:
**此时遍历B数组的时候就要从后向前遍历这样避免重复覆盖**。 **此时遍历B数组的时候就要从后向前遍历这样避免重复覆盖**。
``` ```C++
class Solution { class Solution {
public: public:
int findLength(vector<int>& A, vector<int>& B) { int findLength(vector<int>& A, vector<int>& B) {

View File

@ -0,0 +1,140 @@
<p align="center">
<a href="https://mp.weixin.qq.com/s/RsdcQ9umo09R6cfnwXZlrQ"><img src="https://img.shields.io/badge/PDF下载-代码随想录-blueviolet" alt=""></a>
<a href="https://mp.weixin.qq.com/s/b66DFkOp8OOxdZC_xLZxfw"><img src="https://img.shields.io/badge/刷题-微信群-green" alt=""></a>
<a href="https://space.bilibili.com/525438321"><img src="https://img.shields.io/badge/B站-代码随想录-orange" alt=""></a>
<a href="https://mp.weixin.qq.com/s/QVF6upVMSbgvZy8lHZS3CQ"><img src="https://img.shields.io/badge/知识星球-代码随想录-blue" alt=""></a>
</p>
<p align="center"><strong>欢迎大家<a href="https://mp.weixin.qq.com/s/tqCxrMEU-ajQumL1i8im9A">参与本项目</a>,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!</strong></p>
如今动态规划已经讲解了42道经典题目共50篇文章是时候做一篇总结了。
关于动态规划,在专题第一篇[关于动态规划,你该了解这些!](https://mp.weixin.qq.com/s/ocZwfPlCWrJtVGACqFNAag)就说了动规五部曲,**而且强调了五部对解动规题目至关重要!**
这是Carl做过一百多道动规题目总结出来的经验结晶啊如果大家跟着「代码随想哦」刷过动规专题一定会对这动规五部曲的作用感受极其深刻。
动规五部曲分别为:
1. 确定dp数组dp table以及下标的含义
2. 确定递推公式
3. dp数组如何初始化
4. 确定遍历顺序
5. 举例推导dp数组
动规专题刚开始的时候,讲的题目比较简单,不少录友和我反应:这么简单的题目 讲的复杂了不用那么多步骤分析想出递推公式直接就AC这道题目了。
**Carl的观点一直都是 简单题是用来 巩固方法论的**。 简单题目是可以靠感觉,但后面稍稍难一点的题目,估计感觉就不好使了。
在动规专题讲解中,也充分体现出,这动规五部曲的重要性。
还有不少录友对动规的理解是:递推公式是才是最难最重要的,只要想出递归公式,其他都好办。
**其实这么想的同学基本对动规理解的不到位的**
动规五部曲里,哪一部没想清楚,这道题目基本就做不出来,即使做出来了也没有想清楚,而是朦朦胧胧的就把题目过了。
* 如果想不清楚dp数组的具体含义递归公式从何谈起甚至初始化的时候就写错了。
* 例如[动态规划:不同路径还不够,要有障碍!](https://mp.weixin.qq.com/s/lhqF0O4le9-wvalptOVOww) 在这道题目中,初始化才是重头戏
* 如果看过背包系列特别是完全背包那么两层for循环先后顺序绝对可以搞懵很多人反而递归公式是简单的。
* 至于推导dp数组的重要性动规专题里几乎每篇Carl都反复强调当程序结果不对的时候一定要自己推导公式看看和程序打印的日志是否一样。
好啦,我们再一起回顾一下,动态规划专题中我们都讲了哪些内容。
## 动划基础
* [关于动态规划,你该了解这些!](https://mp.weixin.qq.com/s/ocZwfPlCWrJtVGACqFNAag)
* [动态规划:斐波那契数](https://mp.weixin.qq.com/s/ko0zLJplF7n_4TysnPOa_w)
* [动态规划:爬楼梯](https://mp.weixin.qq.com/s/Ohop0jApSII9xxOMiFhGIw)
* [动态规划:使用最小花费爬楼梯](https://mp.weixin.qq.com/s/djZB9gkyLFAKcQcSvKDorA)
* [动态规划:不同路径](https://mp.weixin.qq.com/s/MGgGIt4QCpFMROE9X9he_A)
* [动态规划:不同路径还不够,要有障碍!](https://mp.weixin.qq.com/s/lhqF0O4le9-wvalptOVOww)
* [动态规划:整数拆分,你要怎么拆?](https://mp.weixin.qq.com/s/cVbyHrsWH_Rfzlj-ESr01A)
* [动态规划:不同的二叉搜索树](https://mp.weixin.qq.com/s/8VE8pDrGxTf8NEVYBDwONw)
## 背包问题系列
<img src='https://code-thinking.cdn.bcebos.com/pics/动态规划-背包问题总结.png' width=500 alt='背包问题大纲'> </img></div>
* [动态规划关于01背包问题你该了解这些](https://mp.weixin.qq.com/s/FwIiPPmR18_AJO5eiidT6w)
* [动态规划关于01背包问题你该了解这些滚动数组](https://mp.weixin.qq.com/s/M4uHxNVKRKm5HPjkNZBnFA)
* [动态规划分割等和子集可以用01背包](https://mp.weixin.qq.com/s/sYw3QtPPQ5HMZCJcT4EaLQ)
* [动态规划:最后一块石头的重量 II](https://mp.weixin.qq.com/s/WbwAo3jaUaNJjvhHgq0BGg)
* [动态规划:目标和!](https://mp.weixin.qq.com/s/2pWmaohX75gwxvBENS-NCw)
* [动态规划:一和零!](https://mp.weixin.qq.com/s/x-u3Dsp76DlYqtCe0xEKJw)
* [动态规划:关于完全背包,你该了解这些!](https://mp.weixin.qq.com/s/akwyxlJ4TLvKcw26KB9uJw)
* [动态规划:给你一些零钱,你要怎么凑?](https://mp.weixin.qq.com/s/PlowDsI4WMBOzf3q80AksQ)
* [动态规划Carl称它为排列总和](https://mp.weixin.qq.com/s/Iixw0nahJWQgbqVNk8k6gA)
* [动态规划:以前我没得选,现在我选择再爬一次!](https://mp.weixin.qq.com/s/e_wacnELo-2PG76EjrUakA)
* [动态规划: 给我个机会,我再兑换一次零钱](https://mp.weixin.qq.com/s/dyk-xNilHzNtVdPPLObSeQ)
* [动态规划:一样的套路,再求一次完全平方数](https://mp.weixin.qq.com/s/VfJT78p7UGpDZsapKF_QJQ)
* [动态规划:单词拆分](https://mp.weixin.qq.com/s/3Spx1B6MbIYjS8YkVbByzA)
* [动态规划:关于多重背包,你该了解这些!](https://mp.weixin.qq.com/s/b-UUUmbvG7URWyCjQkiuuQ)
* [听说背包问题很难? 这篇总结篇来拯救你了](https://mp.weixin.qq.com/s/ZOehl3U1mDiyOQjFG1wNJA)
## 打家劫舍系列
* [动态规划:开始打家劫舍!](https://mp.weixin.qq.com/s/UZ31WdLEEFmBegdgLkJ8Dw)
* [动态规划:继续打家劫舍!](https://mp.weixin.qq.com/s/kKPx4HpH3RArbRcxAVHbeQ)
* [动态规划:还要打家劫舍!](https://mp.weixin.qq.com/s/BOJ1lHsxbQxUZffXlgglEQ)
## 股票系列
<img src='https://code-thinking.cdn.bcebos.com/pics/股票问题总结.jpg' width=500 alt='股票问题总结'> </img></div>
* [动态规划:买卖股票的最佳时机](https://mp.weixin.qq.com/s/keWo5qYJY4zmHn3amfXdfQ)
* [动态规划:本周我们都讲了这些(系列六)](https://mp.weixin.qq.com/s/GVu-6eF0iNkpVDKRXTPOTA)
* [动态规划买卖股票的最佳时机II](https://mp.weixin.qq.com/s/d4TRWFuhaY83HPa6t5ZL-w)
* [动态规划买卖股票的最佳时机III](https://mp.weixin.qq.com/s/Sbs157mlVDtAR0gbLpdKzg)
* [动态规划买卖股票的最佳时机IV](https://mp.weixin.qq.com/s/jtxZJWAo2y5sUsW647Z5cw)
* [动态规划:最佳买卖股票时机含冷冻期](https://mp.weixin.qq.com/s/TczJGFAPnkjH9ET8kwH1OA)
* [动态规划:本周我们都讲了这些(系列七)](https://mp.weixin.qq.com/s/vdzDlrEvhXWRzblTnOnzKg)
* [动态规划:买卖股票的最佳时机含手续费](https://mp.weixin.qq.com/s/2Cd_uINjerZ25VHH0K2IBQ)
* [动态规划:股票系列总结篇](https://mp.weixin.qq.com/s/sC5XyEtDQWkonKnbCvZhDw)
## 子序列系列
<img src='https://code-thinking.cdn.bcebos.com/pics/动态规划-子序列问题总结.jpg' width=500 alt=''> </img></div>
* [动态规划:最长递增子序列](https://mp.weixin.qq.com/s/f8nLO3JGfgriXep_gJQpqQ)
* [动态规划:最长连续递增序列](https://mp.weixin.qq.com/s/c0Nn0TtjkTISVdqRsyMmyA)
* [动态规划:最长重复子数组](https://mp.weixin.qq.com/s/U5WaWqBwdoxzQDotOdWqZg)
* [动态规划:最长公共子序列](https://mp.weixin.qq.com/s/Qq0q4HaE4TyasCTj2WGFOg)
* [动态规划:不相交的线](https://mp.weixin.qq.com/s/krfYzSYEO8jIoVfyHzR0rw)
* [动态规划:最大子序和](https://mp.weixin.qq.com/s/2Xtyi2L4r8sM-BcxgUKmcA)
* [动态规划:判断子序列](https://mp.weixin.qq.com/s/2pjT4B4fjfOx5iB6N6xyng)
* [动态规划:不同的子序列](https://mp.weixin.qq.com/s/1SULY2XVSROtk_hsoVLu8A)
* [动态规划:两个字符串的删除操作](https://mp.weixin.qq.com/s/a8BerpqSf76DCqkPDJrpYg)
* [动态规划:编辑距离](https://mp.weixin.qq.com/s/8aG71XjSgZG6kZbiAdkJnQ)
* [为了绝杀编辑距离,我做了三步铺垫,你都知道么?](https://mp.weixin.qq.com/s/kbs4kCUzg8gPFttF9H3Yyw)
* [动态规划:回文子串](https://mp.weixin.qq.com/s/2WetyP6IYQ6VotegepVpEw)
* [动态规划:最长回文子序列](https://mp.weixin.qq.com/s/jbd3p4QPm5Kh1s2smTzWag)
## 动规结束语
关于动规,还有 树形DP打家劫舍系列里有一道数位DP区间DP 概率型DP博弈型DP状态压缩dp等等等这些我就不去做讲解了面试中出现的概率非常低。
能把本篇中列举的题目都研究通透的话,你的动规水平就已经非常高了。 对付面试已经足够!
这已经是全网对动规最深刻的讲解系列了。
**其实大家去网上搜一搜也可以发现,能把动态规划讲清楚的资料挺少的,因为动规确实很难!要给别人讲清楚更难!**
《剑指offer》上 动规的题目很少经典的算法书籍《算法4》 没有讲 动规,而《算法导论》讲的动规基本属于劝退级别的。
讲清楚一道题容易,讲清楚两道题也容易,但把整个动态规划的各个分支讲清楚,每道题目讲通透,并用一套方法论把整个动规贯彻始终就非常难了。
所以Carl花费的这么大精力把自己对动规算法理解 一五一十的全部分享给了录友们,帮助大家少走弯路!
**至于动态规划PDF即将在公众号「代码随想录」全网首发**
最后感谢录友们的一路支持Carl才有继续更下去的动力[玫瑰][撒花]
-----------------------
* 作者微信:[程序员Carl](https://mp.weixin.qq.com/s/b66DFkOp8OOxdZC_xLZxfw)
* B站视频[代码随想录](https://space.bilibili.com/525438321)
* 知识星球:[代码随想录](https://mp.weixin.qq.com/s/QVF6upVMSbgvZy8lHZS3CQ)
<div align="center"><img src=../pics/公众号.png width=450 alt=> </img></div>