[LeetCode]Maximum Length of Repeated Subarray

Maximum Length of Repeated Subarray:

Given two integer arrays A and B, return the maximum length of an subarray that appears in both arrays.

Example 1:
Input:
A: [1,2,3,2,1]
B: [3,2,1,4,7]
Output: 3

Explanation:
The repeated subarray with maximum length is [3, 2, 1].

Note:
1 <= len(A), len(B) <= 1000
0 <= A[i], B[i] < 100

这是一道典型的动态规划题目。
寻找子序列的规律如下:
这里写图片描述
具体思想可见动态规划解最长公共子序列问题

而这是一道找公共子串的题目,和上面不同的是,当xi != yi时,c[i,j]=0。

class Solution {
public:
    int findLength(vector<int>& A, vector<int>& B) {
        int temp[1001][1001],max = 0;
        for(int i = 0; i < A.size(); i++){
            for(int j = 0; j < B.size(); j++){
                if(A[i] == B[j]){
                    temp[i+1][j+1] = temp[i][j] + 1;
                }else{
                    temp[i+1][j+1] = 0;
                }
                max = max>temp[i+1][j+1]?max:temp[i+1][j+1];
            }
        }
        return max;
    }
};
posted @ 2017-11-23 20:19  liangf27  阅读(99)  评论(0编辑  收藏  举报