LeetCode题解——不相交的线 题目介绍 解题思路 其实只要看懂这个题目的2点本质,可以将这题目转换成两个数组的最大顺序子集 第一点要能连线,说明上下2个元素一样 第二点没有交叉,说明相同元素是顺序的 例如nums1[2,5,1,2,5]与nums2[10,5,2,1,5,2],第一个完全可以看成第二个的子集,但不是顺序的,所以最大值不是5 而[2,5,2],[5,1,5],[5,1,2]这种顺序不变的子集才是我们需要的,最大的子集元素为3 现在我们已经将这道题目转换成了求两个数组的最大顺序子集长度,那么可以用动态规划的思想来做 比如上例我们用i代表nums1,0到i的元素,用j代表nums2,0到j的元素 那么i与j的最长顺序子集,就是i-1与j-1的最长顺序子集+1,依次类推就可以求出结果了 代码示例 class Solution { public: int maxUncrossedLines(vector<int>& nums1, vector<int>& nums2) { int len1 = nums1.size(); int len2 = nums2.size(); vector<vector<int>> dp(len1+1,