classSolution: deffindLength(self, nums1: List[int], nums2: List[int]) -> int: ans = 0 for i inrange(len(nums1)): for j inrange(len(nums2)): k = 0 while i+k < len(nums1) and j+k < len(nums2) and nums1[i+k] == nums2[j+k]: k += 1 ans = max(ans, k) return ans
classSolution: deffindLength(self, nums1: List[int], nums2: List[int]) -> int: m = len(nums1) n = len(nums2) ans = 0 j = 0 for offset inrange(m): i = offset j = 0 while i < m and j < n: count = 0 while i < m and j < n and nums1[i] == nums2[j]: count += 1 i += 1 j += 1 j += 1 i += 1 ans = max(ans, count) for offset inrange(n): j = offset i = 0 while i < m and j < n: count = 0 # print('i, j, count', i, j, count) while i < m and j < n and nums1[i] == nums2[j]: count += 1 i += 1 j += 1 j += 1 i += 1 ans = max(ans, count) return ans
classSolution: deffindLength(self, nums1: List[int], nums2: List[int]) -> int: defhelper(start1, start2, length): k = 0 ans = 0 for i inrange(length): if nums1[start1+i] == nums2[start2+i]: k += 1 else: k = 0 ans = max(ans, k) return ans
m = len(nums1) n = len(nums2) ans = 0 for i inrange(m): length = min(m-i, n) # 小优化,length如果小于ans,则无需比较了 if length > ans: ans = max(ans, helper(i, 0, length)) for i inrange(n): length = min(n-i, m) if length > ans: ans = max(ans, helper(0, i, length)) return ans
classSolution: deffindLength(self, nums1: List[int], nums2: List[int]) -> int: m = len(nums1) n = len(nums2) dp = [[0]*(n+1) for _ inrange(m+1)] ans = 0 for i inrange(1, m+1): for j inrange(1, n+1): if nums1[i-1] == nums2[j-1]: dp[i][j] = dp[i-1][j-1] + 1 else: dp[i][j] = 0 ans = max(dp[i][j], ans) return ans