---
# System prepended metadata

title: 643. Maximum Average Subarray I

---

# 643. Maximum Average Subarray I

## 題目概要

給定一個整數陣列 nums 和一個正整數 k，找出一個連續的且長度為 k 的子陣列，這個子陣列所有元素相加取平均數為最大。

```
Example 1:

Input: nums = [1,12,-5,-6,50,3], k = 4
Output: 12.75000
Explanation: Maximum average is (12 - 5 - 6 + 50) / 4 = 51 / 4 = 12.75

Example 2:

Input: nums = [5], k = 1
Output: 5.00000
```

## 解題技巧

- 先求 1 ~ k 的總和，再慢慢一個一個往後加，每往 k 之後加一個數就將總和減去陣列第 `i - (k - 1)` 的數。

## 程式碼

```javascript=
/**
 * @param {number[]} nums
 * @param {number} k
 * @return {number}
 */
var findMaxAverage = function(nums, k) {
    let max = -Infinity;
    let sum = 0;
    
    for (let i = 0; i < nums.length; i++) {
        sum += nums[i];
        if (i >= k - 1) {
            max = Math.max(sum, max);
            sum -= nums[i - (k - 1)];
        }
    }

    return max / k;
};
```

![](https://i.imgur.com/dxOm83L.png)

