718. Maximum Length of Repeated Subarray

Description

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

Constraints

  • 1 <= nums1.length, nums2.length <= 1000

  • 0 <= nums1[i], nums2[i] <= 100

Approach

  • Binarysearch

  • GeeksforGeeks

  • ProgramCreek

  • YouTube

Examples

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].

Solutions

/**
 * Time complexity : O(M∗N), where M, N are the lengths of A, B.
 * Space complexity : O(M∗N), the space used by dp.
 */

class Solution {
    public int findLength(int[] nums1, int[] nums2) {
        if(nums1 == null || nums2 == null) {
            return 0;
        }
        int n1 = nums1.length, n2 = nums2.length;        
        int[][] dp = new int[n1+1][n2+1];
        
        int maxLen = 0;
        for(int i = 1; i <= n1; i++) {
            for(int j = 1; j <= n2; j++) {
                if(nums1[i-1] == nums2[j-1]) {
                    dp[i][j] = 1 + dp[i-1][j-1];
                    maxLen = Math.max(maxLen, dp[i][j]);
                }
            }
        }
        
        return maxLen;
    }
}

Follow up

Last updated

Was this helpful?