欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > leetcode 718 最长公共子数组

leetcode 718 最长公共子数组

2025/5/16 13:26:26 来源:https://blog.csdn.net/qq_39678022/article/details/147193529  浏览:    关键词:leetcode 718 最长公共子数组

在这里插入图片描述这个题目和最长公共子数组,类似于镜像题,子问题比较难想。对于 d p [ i ] [ j ] dp[i][j] dp[i][j] ,定义为分别以 i i i j j j 结尾的最长公共子数组(公共后缀)
核心代码:

if(nums1[i-1] == nums2[j-1]){dp[i][j] = dp[i-1][j-1]+1;if(dp[i][j] > ans)ans = dp[i][j];
}
else dp[i][j] = 0;

注意,和最长公共子序列不同的是,最后一个元素如果不相同,那 d p [ i ] [ j ] dp[i][j] dp[i][j] 需要赋值为0。其实相当于最长公共子序列的一个变种,核心代码和最长公共子序列一致。

typedef vector<int> V;
class Solution {
public:int findLength(vector<int>& nums1, vector<int>& nums2) {int n1 = nums1.size(), n2 = nums2.size();int ans = 0;vector<V> dp(n1+1, V(n2+1, 0));for(int i=1;i<=n1;i++){for(int j=1;j<=n2;j++){if(nums1[i-1] == nums2[j-1]){dp[i][j] = dp[i-1][j-1]+1;if(dp[i][j] > ans)ans = dp[i][j];}else dp[i][j] = 0;}}return ans;}
};

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词