美文网首页
LeetCode-最长重复子数组

LeetCode-最长重复子数组

作者: eagerabu | 来源:发表于2020-07-01 17:43 被阅读0次

题目描述:


题目.jpg

解题思路:
使用二维数组能够清晰的表示出两个数组相同的部分,此处二维数组定义为 int[][] pointValue=new int[][]; 元素不同的位置标识为0,相同的位置存储以此位置向前数连续相同的个数

图示.png

完整代码:

class Solution {
    public int findLength(int[] A, int[] B) {
        //获取两数组长度
        int aLength=A.length;
        int bLength=B.length;

        //标识两数组截止到当前位置对应相同部分长度
        int[][] pointValue=new int[aLength][bLength];

        //存储最大长度
        int maxLength=0;

        //开始计算最大相同长度
        for(int i=0;i<aLength;i++){
           for(int j=0;j<bLength;j++){
               if(A[i]==B[j]){
                 pointValue[i][j]=((i-1)<0||(j-1)<0)?1:pointValue[i-1][j-1]+1;
                 maxLength=Math.max(maxLength,pointValue[i][j]);
               }
           }
        }
        return maxLength;
    }
}

相关文章

网友评论

      本文标题:LeetCode-最长重复子数组

      本文链接:https://www.haomeiwen.com/subject/ulhhqktx.html