Leetcode---718. 最长重复子数组---每日一题---动态规划

    技术2022-07-10  174

    718. 最长重复子数组

    给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长的子数组的长度。

    示例 1:

    输入: A: [1,2,3,2,1] B: [3,2,1,4,7] 输出: 3 解释: 长度最长的公共子数组是 [3, 2, 1]。

    说明:

    1 <= len(A), len(B) <= 10000 <= A[i], B[i] < 100

    实现代码

    class Solution { public: int findLength(vector<int>& A, vector<int>& B) { int lena = A.size(), lenb = B.size(), ans = 0; vector<vector<int>> dp(lena + 1, vector<int>(lenb + 1, 0)); for(int i = lena - 1; i >= 0; i--){ for(int j = lenb - 1; j >= 0; j--){ if(A[i] == B[j]) { dp[i][j] = dp[i + 1][j + 1] + 1; if(dp[i][j] > ans) ans = dp[i][j]; } } } return ans; } };
    Processed: 0.009, SQL: 9