题目描述:
解:
看到这种求最大组合数的,想到肯定可以用dp做,但是没发现本题是最长子序列的变体。
其实就是套最长子序列的模板就可以了,一样的数字就长度+1,不一样的取大者。
class Solution {
public int maxUncrossedLines(int[] nums1, int[] nums2) {
int m = nums1.length;
int n = nums2.length;
int[][] dp = new int[m+1][n+1];
for(int i=1; i <= m; i++) {
for (int j = 1; j <= n; j++) {
if(nums1[i-1] == nums2[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[m][n];
}
}