此題使用動态規化求解,使用
dp[i][j]
表示
A[0~i-1]與B[0~j-1]
中的最大連接配接數
當
A[i-1]==B[j-1]
時:
當
A[i-1]!=B[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];
}
}