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 32 33 34
| class Solution { public: int findLength(vector<int>& nums1, vector<int>& nums2) { int m = nums1.size(), n = nums2.size(); int ret = 0; for(int i = 0; i < m; ++i) { int len = min(m - i, n); int r = cal(nums1, nums2, i, 0, len); ret = max(ret, r); } for(int i = 0; i < n; ++i) { int len = min(n - i, m); int r = cal(nums1, nums2, 0, i, len); ret = max(ret, r); } return ret; } private: int cal(vector<int>& nums1, vector<int>& nums2, int addA, int addB, int len) { int k = 0, ret = 0; for(int i = 0; i < len; ++i) { if(nums1[addA + i] == nums2[addB + i]) ++k; else k = 0; ret = max(ret, k); } return ret; } };
|