力扣算法学习day38-1
1035-不相交的线
题目
代码实现
class Solution {
public int maxUncrossedLines(int[] nums1, int[] nums2) {
// 题目分析,连线相交,说明有两个数字在nums1中的顺序和在nums2中的顺序相反,那么只要求nums1中和nums2中
// 相同的数字且数字之间的顺序在nums1和nums2中相同即可,即该问题是求两个数组的最大公共子序列。所以,接下
// 来的步骤直接按照求最大公共子序列的方式求即可。
// dp: 速度 4ms
int[][] dp = new int[nums1.length+1][nums2.length+1];
for(int i = 1;i < nums1.length+1;i++){
for(int j = 1;j < nums2.length+1;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[nums1.length][nums2.length];
}
}