1、目前动态规划的子序列系列的题目之间的区别与联系
【力扣300.最长递增子序列】一个数组,不连续
【力扣674.最长连续递增子序列】一个数组,连续
【力扣718.最长重复子数组】两个数组,连续
【力扣1143.最长公共子序列】两个数组,不连续
【力扣1035.不相交的线】(与1143本质一样)两个数组,不连续
【力扣53.最大子数组和】一个数组,连续
本题【力扣392.判断子序列】(与1143本质一样)两个数组,不连续
2、本题与力扣1143.最长公共子序列的关键区别
关键区别在于【递推公式】
【1143的递推公式如下图所示】
【本题的递推公式如下图所示】
【接下来重点探讨为什么本题的递推公式是这样】
因为本题的题目要求是判断s是不是t的子序列,也就是说s是比较短的那个数组,s不会再回退了
关键就是s不能回退,如下图所示
而1043那题s可以回退,如下图所示
3、在力扣1143.最长公共子序列的代码基础上,本题处理了三个地方
【改数组名】
【改递推公式】
【改返回值】
4、注意事项
(最好不要硬编码二维dp数组的长和宽)【要动态分配dp数组】
(否则会报如下错误)
【正确写法】