เราต้องเขียนฟังก์ชันที่รับอาร์เรย์ตัวเลขและจำนวน n หาผลรวมสูงสุดของ n สมาชิกที่ติดกันในอาร์เรย์
ใช้เทคนิค Sliding Window เพื่อแก้ในเวลา O(n) และพื้นที่ O(1)
ตัวอย่าง: arr=[2,5,3,4,6], n=2 → ผลรวมสูงสุด = 10 (จาก 6+4)
ตัวอย่างโค้ด
const arr = [2, 5, 3, 4, 6];
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