ปัญหา
เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของจำนวนเต็ม arr เป็นอาร์กิวเมนต์แรก และตัวเลข num เป็นอาร์กิวเมนต์ที่สอง
ฟังก์ชันควรหาซับอาร์เรย์ติดกันที่มีความยาว num ซึ่งมีค่าเฉลี่ยมากที่สุด และคืนค่าค่าเฉลี่ยสูงสุดนั้น
ตัวอย่างเช่น หากอินพุตคือ
Input
const arr = [1, 12, -5, -6, 50, 3]; const num = 4;
Output
const output = 12.75;
คำอธิบายผลลัพธ์
เพราะซับอาร์เรย์ที่ต้องการคือ [12, -5, -6, 50]
ตัวอย่าง
โค้ดด้านล่างนี้
const arr = [1, 12, -5, -6, 50, 3];
const num = 4;
const maxAverage = (arr = [], num) => {
let sum = arr.slice(0, num).reduce((acc, v) => acc + v, 0);
let max = sum;
for (let i = 1; i <= arr.length - num; i++) {
sum = sum + arr[i + num - 1] - arr[i - 1];
max = Math.max(max, sum);
}
return max / num;
};
console.log(maxAverage(arr, num));ผลลัพธ์
12.75