题目描述:
题目.jpg
解题思路:
使用二维数组能够清晰的表示出两个数组相同的部分,此处二维数组定义为 int[][] pointValue=new int[][];
元素不同的位置标识为0,相同的位置存储以此位置向前数连续相同的个数
完整代码:
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;
}
}
网友评论