Given two integer arrays A and B,
return the maximum length of an subarray that appears in both arrays.
简单dp
class Solution {
public:
int findLength(vector<int>& A, vector<int>& B) {
int dp[1024][1024];
int s_a = A.size();
int s_b = B.size();
for(int i = 0; i <= s_a; i++){
dp[i][0] = 0;
}
for(int i =0; i <= s_b; i++){
dp[0][i] = 0;
}
int max_length = 0;
for(int i = 1; i <= s_a; i++){
for(int j = 1; j <= s_b; j++){
if (A[i-1] == B[j-1]){
dp[i][j] = dp[i-1][j-1] + 1;
if(dp[i][j] > max_length){
max_length = dp[i][j];
}
}
else{
dp[i][j] = 0;
}
}
}
return max_length;
}
};
本文介绍了一种使用动态规划解决寻找两个整数数组中最长相同子数组的问题的方法。通过定义一个二维数组来记录不同位置上两个数组元素匹配的情况,并以此为基础计算最长匹配子数组的长度。
239

被折叠的 条评论
为什么被折叠?



