Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 공통 하위 배열의 최대 길이 찾기

<시간/>

문제

두 개의 리터럴 배열 arr1 및 arr2를 각각 첫 번째 및 두 번째 인수로 사용하는 JavaScript 함수를 작성해야 합니다.

우리 함수는 두 배열에 모두 나타나는 하위 배열의 최대 길이를 반환해야 합니다.

예를 들어, 함수에 대한 입력이

인 경우

입력

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