此题使用动态规化求解,使用dp[i][j]
表示A[0~i-1]与B[0~j-1]
中的最大连接数
当A[i-1]==B[j-1]
时:
dp[i][j] = dp[i-1][j-1]+1;
当A[i-1]!=B[j-1]
时:
dp[i][j] = Max(dp[i-1][j],dp[i][j-1]);
class Solution {
public int maxUncrossedLines(int[] A, int[] B) {
int[][] dp = new int[A.length+1][B.length+1];
for(int i = 1; i < A.length + 1; i++){
for(int j = 1; j < B.length + 1; j++){
if(A[i - 1] == B[j - 1]){
dp[i][j] = dp[i - 1][j - 1] + 1;
}else{
dp[i][j] = Math.max(dp[i-1][j],dp[i][j-1]);
}
}
}
return dp[A.length][B.length];
}
}