1035. 不相交的线
难度中等126
在两条独立的水平线上按给定的顺序写下 nums1
和 nums2
中的整数。
现在,可以绘制一些连接两个数字 nums1[i]
和 nums2[j]
的直线,这些直线需要同时满足满足:
nums1[i] == nums2[j]
- 且绘制的直线不与任何其他连线(非水平线)相交。
请注意,连线即使在端点也不能相交:每个数字只能属于一条连线。
以这种方法绘制线条,并返回可以绘制的最大连线数。
示例 1:
1 | 输入:nums1 = [1,4,2], nums2 = [1,2,4] |
示例 2:
1 | 输入:nums1 = [2,5,1,2,5], nums2 = [10,5,2,1,5,2] |
示例 3:
1 | 输入:nums1 = [1,3,7,1,7,5], nums2 = [1,9,2,5,1] |
提示:
求不相交的线的数量就是求最长公共子序列,求出最长公共子序列后,子序列中的所有数字连线就是连线数量最多的,即最长公共子序列的长度就是不相交连线数量最多的。
求最长公共子序列的思路:
- 当两个字符相同时,问题由子问题
dp[i-1][j-1]
转化而来 - 当两个字符不相同时,问题由子问题
dp[i-1][j]
和dp[i][j-1]
中的最大值转移而来。
1 | class Solution { |