1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#include <iostream>
#include <vector>
#include <algorithm>
class Solution {
public:
int findLength(std::vector<int>& nums1, std::vector<int>& nums2) {
int m = nums1.size();
int n = nums2.size();
if (m < n) {
std::swap(nums1, nums2);
std::swap(m, n);
}
std::vector<int> dp(n + 1, 0);
int res = 0;
for (int num : nums1) {
for (int i = n; i > 0; --i) {
if (nums2[i - 1] == num) {
dp[i] = 1 + dp[i - 1];
res = std::max(res, dp[i]);
}
else {
dp[i] = 0;
}
}
}
return res;
}
};
|