Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การหาความยาวสูงสุดของอาร์เรย์ย่อยร่วมใน 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