#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)
/*
* 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
}
}