Computer >> Máy Tính >  >> Lập trình >> Javascript

Tìm độ dài tối đa của mảng con chung trong JavaScript

Vấn đề

Chúng tôi bắt buộc phải viết một hàm JavaScript có hai mảng chữ, arr1 và arr2, làm đối số thứ nhất và thứ hai tương ứng.

Hàm của chúng ta phải trả về độ dài tối đa của một mảng con xuất hiện trong cả hai mảng.

Ví dụ:nếu đầu vào của hàm là

Đầu vào

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

Đầu ra

const output = 3;

Giải thích đầu ra

Mảng con được lặp lại có độ dài tối đa là [3, 2, 1].

Ví dụ

Sau đây là mã -

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));

Đầu ra

3