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];
    }
};

 

posted on 2021-05-21 15:45  hannah_id  阅读(42)  评论(0)    收藏  举报

导航