1,题目描述
2,题目分析
思路分析: 这显然是一道动态规划的题,蛋式可能会有很大一部分的道友做错,会把“子数组”、 “子序列”混淆。“子数组”要求连续,“子序列”并不要求连续。 所以dp[i][j]应该表示当A[i - 1] == B[j - 1]时,A[0, i -1],B[0, j - 1]连续的重复子数组长度。
3,代码实现
class Solution {
public:
int findLength(vector<int>& A, vector<int>& B) {
int dp[1001][1001];
for(int i=0;i<=B.size();i++)
{
dp[0][i]=0;
}
for(int i=0;i<=A.size();i++)
{
dp[i][0]=0;
}
int ans = 0;
for(int i=1;i<=A.size();i++)
{
for(int j=1;j<=B.size();j++)
{
//cout<<i<<" "<<j<<endl;
if(A[i-1]==B[j-1])
{
dp[i][j] = dp[i-1][j-1]+1;
ans = max(ans,dp[i][j]);
}
else
{
dp[i][j] = 0;
}
}
}
return ans;
}
};