思路:
还在想这道题如何保证不相交?这道题和最长公共子序列的区别?
实际上最长公共子序列就是不相交的
就是一模一样的写法。。。就是那道题。都不用改
储备:
问题重点:
最后:
class Solution {
public:
int maxUncrossedLines(vector<int>& nums1, vector<int>& nums2) {
int n=nums1.size();
int m=nums2.size();
vector<vector<int>> dp(n+1,vector<int>(m+1,0));
//以i-1,j-1为结尾的最长公共子序列长度
int res=0;
for (int i=1;i<=n;i++) {//遍历a数组
for (int j=1;j<=m;j++) {//遍历b数组
if (nums1[i-1]==nums2[j-1]) dp[i][j]=dp[i-1][j-1]+1;
else dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
res=max(res,dp[i][j]);
}
}
return res;
}

6217

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



