1143. 最长公共子序列
2022年3月23日 更新 这都题和上面的题一样,都是求最长公共子序列,我发现,即便都不会写,看一遍题解分析,重点看看别人画的二维数组讲解,能够更好的理解代码 上次的代码可以继续精简
这道题看不明白啊,只能跟着答案先马一遍,
动态规划看了不少文章和解释,好像核心就在倒推两字,从得到答案的最后一种情况倒推,分析思路然后在写代码,但是这道最长子序列好像不能倒推
var longestCommonSubsequence = function(text1, text2) {
const m = text1.length, n = text2.length;
const dp = new Array(m+1).fill(0).map(() => new Array(n+1).fill(0));
// 注意这里取从i=1 开始 因为text1的最大的坐标比m少1
for(let i = 1; i<=m;i++){
let c1 = text1[i-1]
for(let j =1; j <= n; j ++){
let c2 = text2[j-1];
if(c1 === c2) {
dp[i][j] = dp[i-1][j-1] + 1;
} else {
dp[i][j] = Math.max(dp[i-1][j], dp[i][j-1])
}
}
}
return dp[m][n];
};