LeetCode 1035 不相交的线[动态规划] HERODING的LeetCode之路
Posted HERODING23
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 1035 不相交的线[动态规划] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。
解题思路:
老实说,我是没想到这个竟然是最长公共子序列,甚至看到别的评论提到也没想到这个和公共子序列那题一模一样!仔细看题确实能够知道是用动态规划去求解,但是我一直没能获取到的信息就是不交叉的线的序列一定是按照序列排序的,所以才不交叉!代码细节这里就不多赘述了,注释已经很详尽了,代码如下:
class Solution {
public:
int maxUncrossedLines(vector<int>& nums1, vector<int>& nums2) {
int m = nums1.size(), n = nums2.size();
// 定义动态规划数组
vector<vector<int>> dp(m + 1, vector<int>(n + 1));
for(int i = 1; i <= m; i ++) {
for(int j = 1; j <= n; j ++) {
// 如果当前 i, j 位置字符相等
if(nums1[i - 1] == nums2[j - 1]) {
// 等于i - 1 与 j - 1长度的字符串最长的公共子序 + 1
dp[i][j] = dp[i - 1][j - 1] + 1;
} else {
// 等于各自减 1 个长度的字符串最长的公共子序列
dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);
}
}
}
return dp[m][n];
}
};
/*作者:heroding
链接:https://leetcode-cn.com/problems/uncrossed-lines/solution/cdong-tai-gui-hua-by-heroding-imfw/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。*/
以上是关于LeetCode 1035 不相交的线[动态规划] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode1035. 不相交的线 (Java/C++ 动态规划)
LeetCode1035. 不相交的线 (Java/C++ 动态规划)
LeetCode 1035 不相交的线[动态规划] HERODING的LeetCode之路