把LIS和LCS對(duì)應(yīng)的總共四種問(wèn)題總結(jié)一下。
Longest Increasing Subsequce:
DP,復(fù)雜度O(n2), 轉(zhuǎn)移方程:
if (nums[j] < nums[i] ) dp[i] = max(dp[j] + 1, dp[i])Longest Increasing Subsubstring:
DP,紙上畫個(gè)圖可以發(fā)現(xiàn),時(shí)間是O(n),空間可以輪換。跟股票買賣有一題比較像。Longest Common Subsequence:
二維DP了,時(shí)間空間都是O(M*N)。方程:
- dp[i][j] = 0, if(i == 0) or (j == 0)
- dp[i][j] = dp[i-1][j-1] + 1, if(s[i] == t[j])
- dp[i][j] = max{dp[i][j-1] , dp[i-1][j] } , if(s[i] != t[j])
- Longest Common Substring:
與上面的類似,當(dāng)str1[i] == str2[j]時(shí),子序列長(zhǎng)度veca[i][j] = veca[i - 1][j - 1] + 1;區(qū)別是當(dāng)str1[i] != str2[j]時(shí),veca[i][j]長(zhǎng)度要為0,而不是max{veca[i - 1][j], veca[i][j - 1]}。