这两天处理的都是子序列和问题,题目之间相关性比较大。1143最长公共子序列问题和1035其实思路是一样的,1035只是需要自己把题目抽象成最长公共子序列的模型。这类题目的共同特点就是dp[i][j]表示长度为[0, i - 1]的字符串text1与长度为[0, j - 1]的字符串text2的最长公共子序列为dp[i][j],这样方便初始化操作。另外,在72编辑距离中很巧妙的一个思想就是逆向思维的运用,要想让两个字符串相同,让其中一个字符串增加一个字符可以看作是将另一个字符串减去一个字符。另外,这类题目的递推公式都是由前面推导而来,在dp[i-1][j-1]的基础上操作,理解这点就可以写出递推公式了。
53最大子序和这道题与编辑距离系列题目思路稍有不同,和贪心的思路类似,
dp[i]=max(dp[i-1]+nums[i],num[i])
这道题的特点是不能将某个数跳过,所以第i个数只有两个状态:一是将前面的总和加上该数,二是舍弃前面的总和,以该数为起点,所以可以写出上面的状态转移方程。
1143.最长公共子序列
视频讲解:动态规划子序列问题经典题目 | LeetCode:1143.最长公共子序列_哔哩哔哩_bilibili
1035.不相交的线
视频讲解:动态规划之子序列问题,换汤不换药 | LeetCode:1035.不相交的线_哔哩哔哩_bilibili
53. 最大子序和
视频讲解:看起来复杂,其实是简单动态规划 | LeetCode:53.最大子序和_哔哩哔哩_bilibili

3951

被折叠的 条评论
为什么被折叠?



