最长重复子数组

Posted _BitterSweet

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最长重复子数组相关的知识,希望对你有一定的参考价值。


class Solution 
public:
    int findLength(vector<int>& A, vector<int>& B) 
        vector<vector<int>> dp (A.size() + 1, vector<int>(B.size() + 1, 0));
        int result = 0;
        for (int i = 1; i <= A.size(); i++) 
            for (int j = 1; j <= B.size(); j++) 
                if (A[i - 1] == B[j - 1]) 
                    dp[i][j] = dp[i - 1][j - 1] + 1;
                
                if (dp[i][j] > result) result = dp[i][j];
            
        
        return result;
    
;

时间复杂度: O ( n × m ) O(n × m) O(n×m),n 为A长度,m为B长度
空间复杂度: O ( n × m ) O(n × m) O(n×m)

滚动数组做法

class Solution 
public:
    int findLength(vector<int>& A, vector<int>& B) 
        vector<int> dp(vector<int>(B.size() + 1, 0));
        int result = 0;
        for (int i = 1; i <= A.size(); i++) 
            for (int j = B.size(); j > 0; j--) 
                if (A[i - 1] == B[j - 1]) 
                    dp[j] = dp[j - 1] + 1;
                 else dp[j] = 0; // 注意这里不相等的时候要有赋0的操作
                if (dp[j] > result) result = dp[j];
            
        
        return result;
    
;

以上是关于最长重复子数组的主要内容,如果未能解决你的问题,请参考以下文章

718. 最长重复子数组

718. 最长重复子数组

718. 最长重复子数组

字符串----最长重复子串

每日一题最长无重复子数组最长不含重复字符的子字符串

每日一题最长无重复子数组最长不含重复字符的子字符串