leetcode 718. 最长重复子数组
题目描述:给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长的子数组的长度。
解题步骤:由于是求最长重复子数组,要求子数组必须是连续的,所以解法与求最长公共子字符串相同。
代码:
public int findLength(int[] A, int[] B) {
int[][] dp = new int[A.length+1][B.length+1];
int maxlen = 0;
for (int i = 1; i < dp.length; i++) {
for (int j = 1; j < dp.length; j++) {
if(A[i-1]==B[j-1])
dp[i][j] = dp[i-1][j-1]+1;
else
dp[i][j] = 0;
maxlen = Math.max(maxlen, dp[i][j]);
}
}
return maxlen;
}