문제
두 개의 리터럴 배열 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