Leetcode 718

来源:互联网 发布:ubuntu u盘安装教程 编辑:程序博客网 时间:2024/06/05 16:54

,,## Maximum Length of Repeated Subarray
找出两个数组的最大匹配子数组,其实就是跟最大的字串匹配一样的,双重循环,构造一个二维的表格,对于每一个格子的填写,如果a[i]!=b[j],那么dp[i][j]=0,如果a[i]=b[j],那么dp[i][j] = dp[i-1][j-1] + 1,这就是转移方程,要求的解就是这个表格中的最大值。
以下是代码:

class Solution {public:    int findLength(vector<int>& a, vector<int>& b) {        int dp[1001][1001] = {0}, max = 0;        for (int i = 0; i < a.size(); i++) {            for (int j = 0; j < b.size(); j++) {                if(a[i] != b[j]) dp[i+1][j+1] = 0;                else dp[i+1][j+1] = dp[i][j] + 1;                if(dp[i+1][j+1] > max) max = dp[i+1][j+1];            }        }        return max;    }};