Сложность: medium
Если даны два целочисленных массива nums1 и nums2, верните максимальную длину подмассива, который встречается в обоих массивах.
Пример:
Input: nums1 = [1,2,3,2,1], nums2 = [3,2,1,4,7]
Output: 3
👨💻 Алгоритм:
1⃣Создайте двумерный массив для хранения длин общих подмассивов.
2⃣Используйте динамическое программирование для нахождения максимальной длины общего подмассива.
3⃣Итеративно обновляйте массив, сравнивая элементы обоих массивов и обновляя максимальную длину подмассива.
😎 Решение:
var findLength = function(nums1, nums2) {
let dp = Array(nums1.length + 1).fill(0).map(() => Array(nums2.length + 1).fill(0));
let maxLength = 0;
for (let i = nums1.length - 1; i >= 0; i--) {
for (let j = nums2.length - 1; j >= 0; j--) {
if (nums1[i] === nums2[j]) {
dp[i][j] = dp[i + 1][j + 1] + 1;
maxLength = Math.max(maxLength, dp[i][j]);
}
}
}
return maxLength;
};Ставь 👍 и забирай 📚 Базу знаний