Given two integer arrays A and B, return the maximum length of an subarray that appears in both arrays.
Example 1:
Input: A: [1,2,3,2,1] B: [3,2,1,4,7]
Output: 3Explanation:
The repeated subarray with maximum length is [3, 2, 1].Note:
1 <=len(A), len(B) <= 1000
0 <= A[i], B[i] < 100
动态规划,DP[i][j]表示以A[i]B[j]结尾的最长子序列
Code:
int dp[1001][1001];
int findLength(vector<int>& A, vector<int>& B)
{
int max = 0;
memset(dp, 0, sizeof(dp));
for (int i = 1; i <= A.size(); i++)
{
for (int j = 1; j <= B.size(); j++)
{
if(A[i-1]==B[j-1])dp[i][j]=dp[i-1][j-1]+1;
else
{
dp[i][j] = 0;
}
max = max > dp[i][j] ? max : dp[i][j];
}
}
return max;
}