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
思路:使用循环去比较
1 2 3 2 1 1 2 3 2 1 1 2 3 2 1
3 2 1 4 7 3 2 1 4 7 ... 3 2 1 4 7
class Solution {
public:
int findLength(vector<int>& A, vector<int>& B) {
int lenA = A.size();
int lenB = B.size();
int len = 0;
for(int i = lenB - 1; i >= 0; i--){
int tmp = 0;
for(int j = i, m = 0; j < lenB && m < lenA; j++, m++){
if(B[j] == A[m]){
tmp++;
} else {
len = max(len, tmp);
tmp = 0;
}
}
len = max(len, tmp);
}
for(int i = 1; i < lenA; i++){
int tmp = 0;
for(int j = 0, m = i; j < lenB && m < lenA; j++, m++){
if(B[j] == A[m]){
tmp++;
} else {
len = max(len, tmp);
tmp = 0;
}
}
len = max(len, tmp);
}
return len;
}
};