class Solution:
def findLength(self, A: List[int], B: List[int]) -> int:
n, m = len(A), len(B)
if n > m:
A, B = B, A
n, m = m, n
cache = 0
max_len = 0
for i in range(-(n - 1), m):
for j in range(n):
if i < 0 or i >= m:
i += 1
continue
if A[j] == B[i]:
if i == 0 or j == 0:
cache = 1
else:
cache += 1
max_len = max(max_len, cache)
else:
cache = 0
i += 1
return max_len
class Solution:
def findLength(self, A: List[int], B: List[int]) -> int:
n, m = len(A), len(B)
res = 0
def count_length(length, a_start, b_start):
r, k = 0, 0
ta, tb = A[a_start:], B[b_start:]
for i in range(length):
if ta[i] == tb[i]:
k += 1
r = max(r, k)
else:
k = 0
return r
for i in range(n):
res = max(res, count_length(min(m, n - i), i, 0))
for i in range(m):
res = max(res, count_length(min(n, m - i), 0, i))
return res