在 JavaScript 中查找公共子数组的最大长度

问题

我们需要编写一个 JavaScript 函数,该函数接受两个文字数组 arr1 和 arr2,分别作为第一个和第二个参数。

我们的函数应该返回出现在两个数组中的子数组的最大长度。

例如,如果函数的输入是

输入

const arr1 = [1, 2, 3, 2, 1];

const arr2 = [3, 2, 1, 4, 7];

输出

const output = 3;

输出说明

最大长度的重复子数组是 [3, 2, 1]。

示例

以下是代码 -

const arr1 = [1, 2, 3, 2, 1];

const arr2 = [3, 2, 1, 4, 7];

const maximumLength = (arr1 = [], arr2 = []) => {

   const dp = new Array(arr1.length + 1).fill(0).map(() => new Array(arr2.length + 1).fill(0))

   for (let i = arr1.length - 1; i >= 0; i--) {

      for (let j =arr2.length- 1; j >= 0; j--) {

         if (arr1[i] === arr2[j]) {

            dp[i][j] = dp[i + 1][j + 1] + 1

         } else {

            dp[i][j] = 0

         }

      }

   };

   return dp.reduce((acc, items) => Math.max(acc, ...items), 0)

}

console.log(maximumLength(arr1, arr2));

输出结果
3

以上是 在 JavaScript 中查找公共子数组的最大长度 的全部内容, 来源链接: utcz.com/z/354429.html

回到顶部