718. 最长重复子数组
给两个整数数组 nums1 和 nums2 ,返回 两个数组中 公共的 、长度最长的子数组的长度 。
示例 1:
输入:nums1 = [1,2,3,2,1], nums2 = [3,2,1,4,7]
输出:3
解释:长度最长的公共子数组是 [3,2,1] 。
示例 2:
输入:nums1 = [0,0,0,0,0], nums2 = [0,0,0,0,0]
输出:5
提示:
1 <= nums1.length, nums2.length <= 1000
0 <= nums1[i], nums2[i] <= 100
通过次数125,569提交次数221,158
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/maximum-length-of-repeated-subarray
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
代码实现:
class Solution
{
public:
int findLength(vector<int> &A, vector<int> &B)
{
int res = 0;
vector<vector<int>> v(A.size(), vector<int>(B.size(), 0));
for (auto i = 0; i < A.size(); i++)
{
for (auto j = 0; j < B.size(); j++)
{
if (A[i] == B[j])
{
if (i == 0 || j == 0)
v[i][j] = 1;
else
v[i][j] = v[i - 1][j - 1] + 1;
res = max(res, v[i][j]);
}
}
}
return res;
}
};