【力扣 070】718. 最长重复子数组


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 &A, vector &B)
  {
    int res = 0;
    vector> v(A.size(), vector(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;
  }
};

参考资料

1. leetcode No.718 最长重复子数组