最长公共子序列-优化版-图解,空间复杂度为O(min(m,n)) ,时间复杂度为O(mn),dp一维数组代表上一行的旧值,dp[j]代表dp[i][j]的子结构lcs。后面每次大循环是为了更新dp整行
/**
* @param {string} text1
* @param {string} text2
* @return {number}
*/
var longestCommonSubsequence = function(text1, text2) {
let dp=new Array(text2.length+1).fill(0)
for(let i=1;i<=text1.length;i++){
let pre=0
for(let j=1;j<=text2.length;j++){
let temp=dp[j]
dp[j]=text1[i-1]==text2[j-1]?pre+1:Math.max(dp[j],dp[j-1])
pre=temp
}
}
return dp[text2.length]
};