718. 最长重复子数组
给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长的子数组的长度。
示例 1:
输入: A: [1,2,3,2,1] B: [3,2,1,4,7] 输出: 3 解释: 长度最长的公共子数组是 [3, 2, 1]。
说明:
1 <= len(A), len(B) <= 10000 <= A[i], B[i] < 100
实现代码
class Solution {
public:
int findLength(vector
<int>& A
, vector
<int>& B
) {
int lena
= A
.size(), lenb
= B
.size(), ans
= 0;
vector
<vector
<int>> dp(lena
+ 1, vector
<int>(lenb
+ 1, 0));
for(int i
= lena
- 1; i
>= 0; i
--){
for(int j
= lenb
- 1; j
>= 0; j
--){
if(A
[i
] == B
[j
]) {
dp
[i
][j
] = dp
[i
+ 1][j
+ 1] + 1;
if(dp
[i
][j
] > ans
) ans
= dp
[i
][j
];
}
}
}
return ans
;
}
};