package com.fishercoder.solutions;

/**
 * 718. Maximum Length of Repeated Subarray
 *
 * Given two integer arrays A and B, return the maximum length of an subarray that appears in both arrays.

 Example 1:
 Input:
 A: [1,2,3,2,1]
 B: [3,2,1,4,7]
 Output: 3

 Explanation:
 The repeated subarray with maximum length is [3, 2, 1].
 Note:
 1 <= len(A), len(B) <= 1000
 0 <= A[i], B[i] < 100
 */
public class _718 {
    public static class Solution1 {
        public int findLength(int[] A, int[] B) {
            if (A == null || B == null || A.length == 0 || B.length == 0) {
                return 0;
            }
            int[][] dp = new int[A.length + 1][B.length + 1];
            int result = 0;
            for (int i = A.length - 1; i >= 0; i--) {
                for (int j = B.length - 1; j >= 0; j--) {
                    if (A[i] == B[j]) {
                        dp[i][j] = dp[i + 1][j + 1] + 1;
                    }
                    result = Math.max(result, dp[i][j]);
                }
            }
            return result;
        }
    }
}

@@ -33,365 +33,8 @@
 s;%0A%0A
-/**%0A * 718. Maximum Length of Repeated Subarray%0A *%0A * Given two integer arrays A and B, return the maximum length of an subarray that appears in both arrays.%0A%0A Example 1:%0A Input:%0A A: %5B1,2,3,2,1%5D%0A B: %5B3,2,1,4,7%5D%0A Output: 3%0A%0A Explanation:%0A The repeated subarray with maximum length is %5B3, 2, 1%5D.%0A Note:%0A 1 %3C= len(A), len(B) %3C= 1000%0A 0 %3C= A%5Bi%5D, B%5Bi%5D %3C 100%0A */%0A
 publ

refactor 718