718. 最长重复子数组

Posted HardyDragon_CC

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了718. 最长重复子数组相关的知识,希望对你有一定的参考价值。

718. 最长重复子数组

思路

  • 求连续子序列、子数组,dp适合。
  • dp[i][j] 以下标i - 1为结尾的A,和以下标j - 1为结尾的B,最长重复子数组长度为dp[i][j]。
  • 递推从1开始,利用初始值dp[0][0]
class Solution 
    public int findLength(int[] nums1, int[] nums2) 
        // 数组初始化大小需要注意多一行一列
        int[][] dp = new int[nums1.length + 1][nums2.length + 1];
        int res = 0;
        // i,j从1开始递推到各自最后下标
        for(int i = 1;i <= nums1.length;i++)
            for(int j = 1;j <= nums2.length;j++)
                // 遇到相同的说明可以为子数组,在前一个基础上+1
                if(nums1[i-1] == nums2[j-1])
                    dp[i][j] = dp[i-1][j-1] + 1;
                
                // 保留最大值
                if(dp[i][j] > res)
                    res = dp[i][j];
                
            
        
        return res;
    

以上是关于718. 最长重复子数组的主要内容,如果未能解决你的问题,请参考以下文章

718. 最长重复子数组

718. 最长重复子数组

LeetCode 718. 最长重复子数组(Maximum Length of Repeated Subarray)

718. 最长重复子数组-动态规划

Leetcode刷题Python718. 最长重复子数组

代码随想录算法训练营第五十二天 | 300.最长递增子序列 674. 最长连续递增序列 718. 最长重复子数组