1143.最长公共子序列
与昨天 718. 最长重复子数组 区别在此处是子序列(不需要连续),修改遍历条件即可
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])
其他不变
1035.不相交的线
与1143一模一样,直接照搬,同样是求最长公共子序列
53. 最大子序和
创建长度为n的dp数组,保证每格都是此时的最大子序和,每次判断的时候只需要看前一个的dp值与当前值之和跟当前值孰大孰小即可
for i in range(1, n):
dp[i] = max(nums[i], dp[i - 1] + nums[i])