Vấn đề
Chúng ta cần viết một hàm JavaScript nhận vào một mảng số nguyên arr làm đối số thứ nhất và một số num làm đối số thứ hai.
Hàm phải tìm mảng con liên tiếp có độ dài num có giá trị trung bình lớn nhất. Và cần xuất ra giá trị trung bình lớn nhất đó.
Ví dụ, nếu đầu vào của hàm là:
Đầu vào
const arr = [1, 12, -5, -6, 50, 3]; const num = 4;
Đầu ra
const output = 12.75;
Giải thích đầu ra
Vì mảng con mong muốn là [12, -5, -6, 50].
Ví dụ
Dưới đây là mã:
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));Đầu ra
12.75