很多资料在讲解最长公共子序列(LCS)时,没有解释在 s[i]=t[j] 时,为什么不需要从状态 (i-1,j) 和 (i,j-1) 转移到状态 (i,j)。实际上这并不是显然的,这节课会给出严格证明。此外,LCS 也可以像背包那样,把空间优化成一个数组。
涉及到的力扣题目+代码:
1143. 最长公共子序列 https://leetcode.cn/problems/longest-common-subsequence/solutions/2133188/jiao-ni-yi-bu-bu-si-kao-dong-tai-gui-hua-lbz5/
72. 编辑距离 https://leetcode.cn/problems/edit-distance/solutions/2133222/jiao-ni-yi-bu-bu-si-kao-dong-tai-gui-hua-uo5q/
课后作业:
583. 两个字符串的删除操作 https://leetcode.cn/problems/delete-operation-for-two-strings/
712. 两个字符串的最小ASCII删除和 https://leetcode.cn/problems/minimum-ascii-delete-sum-for-two-strings/
97. 交错字符串 https://leetcode.cn/problems/interleaving-string/
1458. 两个子序列的最大点积 https://leetcode.cn/problems/max-dot-product-of-two-subsequences/
1092. 最短公共超序列 https://leetcode.cn/problems/shortest-common-supersequence/
力扣最全 DP 题单:
https://leetcode.cn/circle/discuss/tXLS3i/
【基础算法精讲】题目+题解汇总:
https://github.com/EndlessCheng/codeforces-go/blob/master/leetcode/README.md