class Solution {
public int findLength(int[] A, int[] B) {
int n = A.length;
int m = B.length;
int f[][] = new int [n+1][m+1];
int ans = 0 ;
for(int i = 0; i < n ; i++) { //最长公共子数组
for(int j = 0 ; j < m ; j++) {
if(A[i]==B[j]) {
f[i+1][j+1] = f[i][j]+1;//只能由斜上角的值决定
}
else {
f[i+1][j+1] = 0; //本想传递给下一个 结果发现传递反而影响结果
}
ans = Math.max(ans,f[i+1][j+1]);
}
}
// for(int i = 1 ; i<=n;i++){
// for(int j = 1 ; j <= m ;j++){
// System.out.print(f[i][j]+" ");
// }System.out.println();
// }
return ans;
}
}
京公网安备 11010502036488号