1035. Uncrossed Lines



两个数组的相同字符之间可以连线且连线不能相交,乍一看就是动态规划。
再仔细想想,发现竟是最长公共子序列。
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++) { int num1 = nums1[i-1]; for(int j = 1; j <= n; j++) { int num2 = nums2[j-1]; if(num1 == num2) dp[i][j] = dp[i-1][j-1] + 1; else dp[i][j] = max(dp[i-1][j], dp[i][j-1]); } } return dp[m][n]; } };
浙公网安备 33010602011771号