1、题目描述
给两个整数数组 nums1
和 nums2
,返回 两个数组中 公共的 、长度最长的子数组的长度 。
示例 1:
输入:nums1 = [1,2,3,2,1], nums2 = [3,2,1,4,7] 输出:3 解释:长度最长的公共子数组是 [3,2,1] 。
示例 2:
输入:nums1 = [0,0,0,0,0], nums2 = [0,0,0,0,0] 输出:5
2、初始思路
2.1 思路
2.2 代码
class Solution:
def findLength(self, nums1: List[int], nums2: List[int]) -> int:
n1 = len(nums1)
n2 = len(nums2)
dp = [0] * (n1+1)
max_l = 0
for i in range(n2):
for j in range(n1, 0, -1):
if nums2[i] == nums1[j-1]:
dp[j] = dp[j-1] + 1
max_l = max(max_l, dp[j])
else:
dp[j] = 0
return max_l