เราจำเป็นต้องเขียนฟังก์ชัน 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