---
tags: data_structure_python
---
# Maximum Average Subarray I
Given an array consisting of `n` integers, find the contiguous subarray of given length `k` that has the maximum average value. And you need to output the maximum average value.
**Example 1:**
```
Input: [1,12,-5,-6,50,3], k = 4
Output: 12.75
Explanation: Maximum average is (12-5-6+50)/4 = 51/4 = 12.75``
```
**Note:**
- 1 <= k <= n <= 30,000.
- Elements of the given array will be in the range [-10,000, 10,000].
# Solution
## Solution 1: Sliding window
```python=
class Solution:
def findMaxAverage(self, nums: List[int], k: int) -> float:
beg, end, maxi = 0, 0, float("-inf")
curr_maxi = 0
while end < len(nums):
curr_maxi += nums[end]
end += 1
if (end - beg) == k:
maxi = max(curr_maxi, maxi)
curr_maxi -= nums[beg]
beg += 1
return maxi / k
```
### Solution 2: Sliding window
Following the template this time.
```python=
class Solution:
def findMaxAverage(self, nums: List[int], k: int) -> float:
# Time complexity: O(n).
# Space complexity: O(1).
m, beg, end = len(nums), 0, 0
maxi = -float("inf")
window = 0
while end < m:
window += nums[end]
if end-beg+1 > k:
window -= nums[beg]
beg += 1
if end-beg+1 == k:
maxi = max(maxi, window)
end += 1
return maxi/k
```