Java AC
- 相当于求两个数组的最长公共子序列,因为k对连线,就是这两数组的公共子序列。
class Solution {
public int maxUncrossedLines(int[] nums1, int[] nums2) {
int[][] dp = new int[nums1.length+1][nums2.length+1];
for (int i = 1; i <= nums1.length; i++) {
int n1 = nums1[i-1];
for (int j = 1; j <= nums2.length; j++) {
int n2 = nums2[j-1];
if (n1==n2){
dp[i][j] = dp[i-1][j-1]+1;
}else{
dp[i][j] = Math.max(dp[i][j-1],dp[i-1][j]);
}
}
}
return dp[nums1.length][nums2.length];
}
}
最长公共子序列与动态规划
该博客讨论了如何使用动态规划求解两个数组的最长公共子序列问题,通过二维数组dp实现,当元素相等时累加长度,否则取较大值更新。此算法在数组处理和序列匹配中具有广泛应用。
381

被折叠的 条评论
为什么被折叠?



