Leetcode 718. 最长重复子数组
程序员文章站
2022-06-28 12:47:27
...
问题描述
解题报告
此题是最长公共子数组,注意与最长公共子序列不同;
对于最长公共子数组, 表示子串以 和 结尾的最长公共子数组。
对于最长公共子序列, 表示数组 和数组 的最长公共子串的长度
实现代码
- 最长公共子数组
class Solution {
public:
int findLength(vector<int>& A, vector<int>& B) {
int m=A.size(),n=B.size(),ans=0;
vector<vector<int>>dp(m+1,vector<int>(n+1,0));
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
if(A[i-1]==B[j-1]){
dp[i][j]=dp[i-1][j-1]+1;
ans=max(ans,dp[i][j]);
}
}
}
return ans;
}
};
- 最长公共子序列
class Solution{
public:
int FindLength(vector<int>& A,vector<int>& B){
int m=A.size(),n=B.size(),ans=0;
vector<vector<int>>dp(m+1,vector<int>(n+1,0));
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
if(A[i-1]==B[j-1]){
dp[i][j]=dp[i-1][j-1];
}
else{
dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
}
}
}
return dp[m][n];
}
};
上一篇: mysql的登陆和退出命令格式
下一篇: css3实现简单的白云飘动背景特效