0
点赞
收藏
分享

微信扫一扫

718. Maximum Length of Repeated Subarray【最大公共子数组】

罗蓁蓁 2022-04-24 阅读 34
javascript

其实这个数组换成字符串来看也是一样的

Given two integer arrays nums1 and nums2, return the maximum length of a subarray that appears in both arrays.

Example 1:

Input: nums1 = [1,2,3,2,1], nums2 = [3,2,1,4,7]
Output: 3
Explanation: The repeated subarray with maximum length is [3,2,1].

Example 2:

Input: nums1 = [0,0,0,0,0], nums2 = [0,0,0,0,0]
Output: 5

Constraints:

  • 1 <= nums1.length, nums2.length <= 1000
  • 0 <= nums1[i], nums2[i] <= 100

这个跟最长公共子序列有异曲同工之妙

/**
 * @param {number[]} nums1
 * @param {number[]} nums2
 * @return {number}
 */
var findLength = function(nums1, nums2) {
        const m=nums1.length,n=nums2.length
    const dp=new Array(m+1).fill(0).map(()=>{
        return new Array(n+1).fill(0)
    })
    let maxnum=0
    for(let i=1;i<=m;i++){
        const c1=nums1[i-1]
        for(let j=1;j<=n;j++){
            const c2=nums2[j-1]
            if(c1===c2){
                dp[i][j]=dp[i-1][j-1]+1
                if(dp[i][j]>maxnum){
                    maxnum=dp[i][j]
                }
            }else{
                dp[i][j]=0
            }
        }
    }
    return maxnum
};
举报

相关推荐

0 条评论