เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของตัวเลข เช่น arr เป็นอาร์กิวเมนต์แรกและตัวเลข เช่น num เป็นอาร์กิวเมนต์ที่สอง
อาร์กิวเมนต์ที่สองจะเล็กกว่าหรือเท่ากับความยาวของอาร์เรย์เสมอ ฟังก์ชันของเราควรค้นหาและส่งกลับจำนวนองค์ประกอบที่ต่อเนื่องกันจากอาร์เรย์ที่รวมกันมากที่สุด
ตัวอย่างเช่น −
หากอินพุตเป็น −
const arr = [2,5,3,4,6]; const num = 2
เอาต์พุตสำหรับอินพุตด้านบนควรมีลักษณะดังนี้ −
const output = 10
เพราะ 6 และ 4 เป็นสององค์ประกอบต่อเนื่องกันที่รวมกันมากที่สุด
เราสามารถแก้ปัญหานี้ได้ด้วยเทคนิคหน้าต่างบานเลื่อนในเวลาเชิงเส้นและวิธีแก้ปัญหาพื้นที่คงที่
ตัวอย่าง
ต่อไปนี้เป็นรหัส -
const arr = [2, 5, 3, 4, 6];
// helper function to find sum of an array
const findSum = arr => arr.reduce((acc, val) => acc + val);
const maximumSum = (arr = [], num = 1) => {
let left = 0, right = left + num;
let sum = findSum(arr.slice(left, right));
for(; right <= arr.length; right++, left++){
sum = Math.max(findSum(arr.slice(left, right)), sum);
};
return sum;
};
console.log(maximumSum(arr, 2));
console.log(maximumSum(arr, 3)); ผลลัพธ์
ต่อไปนี้เป็นผลลัพธ์บนคอนโซล -
10 12