LeetCode1143 最长公共子序列
代码随想录题目链接/文章讲解/视频讲解:
第一想法:一个2D的DP,dp[i][j] = dp[i - 1][j - 1] + 1,dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]), dp[i][j]代表到text1[i - 1] 与 text2[j - 1] 位置,相通子序列的个数。
看完随想录后:dp[i][j] = max(dp[i - 1][j], dp[i][j - 1])的理解不一样
难点:无
LeetCode1035 不相交的线
代码随想录题目链接/文章讲解/视频讲解:
第一想法:基本和上一题一样
看完随想录后:一致
难点:无
LeetCode53 最大子序和
代码随想录题目链接/文章讲解/视频讲解:
第一想法:没什么想法
看完随想录后:dp[i] 代表到nums[i]位置,最大的加和是多少,需要注意,dp的最后一位不一定是最大的,有可能再dp的中间得出结果,那么就需要额外的一个变量去记录全局最高结果。
难点:理解用dp的方法,每次要抉择是否要选当前的数,如果不选,就要重新开始。
LeetCode392 判断子序列
代码随想录题目链接/文章讲解/视频讲解:
代码随想录代码随想录PDF,代码随想录网站,代码随想录百度网盘,代码随想录知识星球,代码随想录八股文PDF,代码随想录刷题路线,代码随想录知识星球八股文https://programmercarl.com/0392.%E5%88%A4%E6%96%AD%E5%AD%90%E5%BA%8F%E5%88%97.html第一想法:用two pointer一个一个比较,没想到应该如何应用dp。以为是1143和1035的反过来,但是发现edge case非常的不一样。
看完随想录后:其实确实一样,我把s的长度初始化给了dp,那么dp最后一个数如果是0 那么就说明s都有在t里的对应,如果不是0,说明有的s没有出现在t中。
难点:用dp的思路写好复杂