最长重复子数组

    技术2022-07-11  109

    题目:力扣

    解题思路:

    最长公共子串换了个马甲,这要是搁在以前我可能看不出来,果然做题是有用的,看完题目就大概知道需要用动态规划做了,这种求最值的而不是具体内容的可以往动态规划上考虑一下,看看是否可以满足动态规划的条件。

    class Solution { public int findLength1(int[] A, int[] B) { int row = A.length+1; int col = B.length+1; int ans = 0; int[][] record = new int[row][col]; for(int i = 1; i < row; i++){ for(int j = 1; j < col; j++){ if(A[i-1] == B[j-1]){ record[i][j] = record[i-1][j-1]+1; } else{ record[i][j] = 0; } ans = Math.max(ans, record[i][j]); } } return ans; } //优化空间 public int findLength2(int[] A, int[] B) { int row = A.length+1; int col = B.length+1; int ans = 0; int[] record = new int[col]; for(int i = 1; i < row; i++){ //必须从后向前遍历 for(int j = col-1; j >= 1; j--){ if(A[i-1] == B[j-1]){ record[j] = record[j-1]+1; } else{ record[j] = 0; } ans = Math.max(ans, record[j]); } } return ans; } }

     

    Processed: 0.017, SQL: 9