समस्या
हमें एक 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