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. 最长重复子数组

718. 最长重复子数组

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

精选力扣500题 第51题 LeetCode 718. 最长重复子数组c++/java详细题解

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