尋找 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

更新於: 2021-04-24

309 次瀏覽

開啟您的 職業生涯

完成課程獲取認證

入門
廣告
© . All rights reserved.