Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

ค่าเฉลี่ยสูงสุดของซับอาร์เรย์ความยาวกำหนดใน JavaScript


ปัญหา

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