代码随想录算法训练营第四十四天|LeetCode1143 最长公共子序列、LeetCode1035 不相交的线、LeetCode53 最大子序和、LeetCode392 判断子序列

LeetCode1143 最长公共子序列

代码随想录题目链接/文章讲解/视频讲解:

代码随想录代码随想录PDF,代码随想录网站,代码随想录百度网盘,代码随想录知识星球,代码随想录八股文PDF,代码随想录刷题路线,代码随想录知识星球八股文icon-default.png?t=O83Ahttps://programmercarl.com/1143.%E6%9C%80%E9%95%BF%E5%85%AC%E5%85%B1%E5%AD%90%E5%BA%8F%E5%88%97.html

第一想法:一个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 不相交的线

代码随想录题目链接/文章讲解/视频讲解:

代码随想录代码随想录PDF,代码随想录网站,代码随想录百度网盘,代码随想录知识星球,代码随想录八股文PDF,代码随想录刷题路线,代码随想录知识星球八股文icon-default.png?t=O83Ahttps://programmercarl.com/1035.%E4%B8%8D%E7%9B%B8%E4%BA%A4%E7%9A%84%E7%BA%BF.html

第一想法:基本和上一题一样

看完随想录后:一致

难点:无

LeetCode53 最大子序和

代码随想录题目链接/文章讲解/视频讲解:

代码随想录代码随想录PDF,代码随想录网站,代码随想录百度网盘,代码随想录知识星球,代码随想录八股文PDF,代码随想录刷题路线,代码随想录知识星球八股文icon-default.png?t=O83Ahttps://programmercarl.com/0053.%E6%9C%80%E5%A4%A7%E5%AD%90%E5%BA%8F%E5%92%8C%EF%BC%88%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%EF%BC%89.html

第一想法:没什么想法

看完随想录后:dp[i] 代表到nums[i]位置,最大的加和是多少,需要注意,dp的最后一位不一定是最大的,有可能再dp的中间得出结果,那么就需要额外的一个变量去记录全局最高结果。

难点:理解用dp的方法,每次要抉择是否要选当前的数,如果不选,就要重新开始。

LeetCode392 判断子序列

代码随想录题目链接/文章讲解/视频讲解:

代码随想录代码随想录PDF,代码随想录网站,代码随想录百度网盘,代码随想录知识星球,代码随想录八股文PDF,代码随想录刷题路线,代码随想录知识星球八股文icon-default.png?t=O83Ahttps://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的思路写好复杂

你可能感兴趣的:(算法)