Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

การหาความยาวสูงสุดของ subarray ทั่วไปใน 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