718. 最长重复子数组
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; } }