
1、目前动态规划的子序列系列的题目之间的区别与联系【力扣300.最长递增子序列】一个数组不连续【力扣674.最长连续递增子序列】一个数组连续【力扣718.最长重复子数组】两个数组连续【力扣1143.最长公共子序列】两个数组不连续【力扣1035.不相交的线】与1143本质一样两个数组不连续【力扣53.最大子数组和】一个数组连续【力扣392.判断子序列】与1143本质一样两个数组不连续【力扣115.不同的子序列】与1143本质一样两个数组不连续本题【力扣583.两个字符串的删除操作】与1143本质一样两个数组不连续2、本题可以有两种方法方法一直接法方法二间接法利用最长公共子序列3、方法一直接法关键区别递推关系和dp数组初始化代码续【递推关系】的理解如下// 在写递推关系时要反复回看dp数组本身的含义// dp[i][j]以i-1为结尾的word1和以j-1为结尾的word2所需删除的最少元素数如果word1[i-1] word2[j-1]就不需要删除元素所以dp[i][j] dp[i-1][j-1];否则就要删除元素dp[i][j]的最小值可以来源于三种情况// 删除一个word1的元素所需删除最少元素数的代码表示为dp[i-1][j]1// 删除一个word2的元素所需删除最少元素数的代码表示为dp[i][j-1]1// 删除一个word1的元素和一个word2的元素一共删除了两个元素所需删除最少元素数的代码表示为dp[i-1][j-1]2所以如果word1[i-1] 不等于 word2[j-1]dp[i][j] min(min(dp[i-1][j]1,dp[i][j-1]1),dp[i-1][j-1]2);【dp数组初始化】的理解如下4、方法二间接法利用最长公共子序列本题可以转换题意得到最长公共子序列需要删除的元素数是多少所以在代码上的区别是返回值本题【力扣583.两个字符串的删除操作】代码如下图所示【力扣1143.最长公共子序列】代码如下图所示