718.最长重复子数组


718. 最长重复子数组

难度中等210

给两个整数数组 AB ,返回两个数组中公共的、长度最长的子数组的长度。

示例 1:

输入:
A: [1,2,3,2,1]
B: [3,2,1,4,7]
输出: 3
解释: 
长度最长的公共子数组是 [3, 2, 1]。
**说明:**

1. 1 <= len(A), len(B) <= 1000
2. 0 <= A[i], B[i] < 100
//滑动窗口
class Solution {
    public int findLength(int[] A, int[] B) {
        int n = A.length;
        int m = B.length;
        int ret = 0;
        for (int i = 0; i < n; i++) {
            int len = Math.min(m,n-i);
            int maxRet = findMaxRet(A, B, i, 0, len);
            ret = Math.max(maxRet,ret);
        }
        for (int i = 0; i < m; i++) {
            int len = Math.min(n,m-i);
            int maxRet = findMaxRet(A, B, 0, i, len);
            ret = Math.max(maxRet,ret);
        }
        return ret;
    }

    public int findMaxRet(int[] A,int[] B,int aindex,int bindex,int len){
        int k = 0;
        int ret = 0;
        for (int i = 0; i < len; i++) {
            if(A[aindex+i]==B[bindex+i]){
                k++;
            }
            else{
                k=0;
            }
            ret = Math.max(ret,k);
        }
        return ret;
    }
}
//dp
class Solution {
    public int findLength(int[] A, int[] B) {
        int n = A.length;
        int m = B.length;
        int ret = 0;
        int[][] dp = new int[n + 1][m + 1];
        for (int i = n - 1; i >= 0; i--) {
            for (int j = m - 1; j >= 0; j--) {
                if (A[i] == B[j]) {
                    dp[i][j] = dp[i + 1][j + 1] + 1;
                } else {
                    dp[i][j] = 0;
                }
                ret = Math.max(ret, dp[i][j]);
            }
        }
        return ret;
    }
}

文章作者: anlen123
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 anlen123 !
 上一篇
378.有序矩阵中第K小的元素 378.有序矩阵中第K小的元素
378. 有序矩阵中第K小的元素难度中等264收藏分享切换为英文关注反馈 给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第 k 小的元素。请注意,它是排序后的第 k 小元素,而不是第 k 个不同的元素。 示例: ma
2020-07-02 anlen123
下一篇 
C++ lower_bound 与 upper_bound 函数 C++ lower_bound 与 upper_bound 函数
C++ lower_bound 与 upper_bound 函数头文件: #include 二分查找的函数有 3 个: 参考:C++ lower_bound 和upper_bound lower_bound(起始地址,结束地址,要查找的
2020-06-28 anlen123
  目录