代码随想录算法训练营第53天 | 1143.最长公共子序列 1035.不相交的线 53. 最大子序和 动态规划

一、Leetcode 1143.最长公共子序列

这题和718. 最长重复子数组很像,区别是子数组和子序列的定义差别导致递推公式的变化。子序列包含了子数组的情况。
dp[i][j]:长度为[0, i - 1]的字符串text1与长度为[0, j - 1]的字符串text2的最长公共子序列为dp[i][j]

				if (text1[i - 1] == text2[j - 1]) {
                    dp[i][j] = dp[i - 1][j - 1] + 1;
                } else {
                    dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);
                }

二、Leetcode 1035.不相交的线

我一眼就看出来,是和1143最长公共子序列一样的了。

三、Leetcode 53. 最大子序和 动态规划

遇到 i - 1 项还是得多上心。
dp[i]:包括下标i之前的最大连续子序列和为dp[i]。

dp[i] = max(dp[i - 1] + nums[i], nums[i]);

你可能感兴趣的:(刷题,算法,动态规划,leetcode)