LeetCode718. 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
题目分析:比较典型的动态规划题,和字符串相同的题有点类似。
主要思想:
max1 = max(max1, dp[j] = A[i-1] == B[j-1]?dp[j-1]+1:0);
代码:
class Solution {
public:
int findLength(vector<int>& A, vector<int>& B) {
int max1 = 0;
vector<int> dp(B.size()+1);
for (int i = 1; i <= A.size(); i++) {
for (int j = B.size(); j > 0; j--){
max1 = max(max1, dp[j] = A[i-1] == B[j-1]?dp[j-1]+1:0);
}
}
return max1;
}
};