Skip to main content
Back to problems
#718
Medium Algorithms

Maximum length of repeated subarray

Array Binary Search Dynamic Programming Sliding Window Rolling Hash Hash Function
51.3% acceptance
Feb 21, 2026
7069
180
Given two integer arrays nums1 and nums2, return the maximum length of a subarray that appears in both arrays.

Solution

Rust
Time O(n * m)
Space O(n * m)
LeetCode
solution.rs
/*
 * 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
 * Explanation: The repeated subarray with maximum length is [0,0,0,0,0].
 * Constraints:
 * 1 <= nums1.length, nums2.length <= 1000
 * 0 <= nums1[i], nums2[i] <= 100
 */
impl Solution {
  pub fn find_length(nums1: Vec<i32>, nums2: Vec<i32>) -> i32 {
    let m = nums1.len();
    let n = nums2.len();
    let mut dp = vec![vec![0i32; n + 1]; m + 1];
    let mut max_len = 0;
    for i in 1..=m {
      for j in 1..=n {
        if nums1[i-1] == nums2[j-1] {
          dp[i][j] = dp[i-1][j-1] + 1;
          max_len = max_len.max(dp[i][j]);
        }
      }
    }
    max_len
  }
}