Day 57 1143. 最长公共子序列
1143. 最长公共子序列
题目
1 |
|
题目思路
1、本题可以使用两个一维数组解决问题,也可以使用二维数组解决问题,故选择使用二维数组解决问题。
2、优化后同之前做的三题目一致,可以优化空间为一个列为 2 的数组,行为 text2.size()的数组进行优化,由于时间问题,暂时作为 TODO。
3、研究状态转移方程为:
text1[i] == text2[j] : ans[i][j] = ans[i - 1][j - 1] + 1 即是 s1[i] 与 s2[j] 时最长公共子序列的的长度.
text1[i] != text2[j] : ans[i][j] = max(ans[i - 1][j], ans[i][j - 1]。代表必然不使用 s1[i](但可能使用s2[j]) 时和必然不使用 s2[j](但可能使用s1[i])时的长度。
4、使用空格是能够更好的处理边界条件
1 |
|
复杂度
时间复杂度:O(n * m)
空间复杂度:O(n + m)
Day 57 1143. 最长公共子序列
https://chaggle.github.io/2021/11/05/Leetcode/91-day/day-57/