643. Maximum Average Subarray I¶
Summary¶
| Solution Approach | Explanation (1-minute) | Time Complexity | Space Complexity |
|---|---|---|---|
| Brute Force | Check all possible subarrays of length k and calculate their averages | \(O(n*k)\) | \(O(1)\) |
| Sliding Window | Maintain a window sum and slide it across the array, updating sum efficiently | \(O(n)\) | \(O(1)\) |
Implementation¶
class Solution:
def findMaxAverage(self, nums: List[int], k: int) -> float:
curr_sums = 0
max_sums = -float("inf")
for i in range(len(nums)):
if i+1 < k:
curr_sums += nums[i]
elif i+1 == k:
curr_sums += nums[i]
max_sums = max(
max_sums,
curr_sums
)
else:
curr_sums += nums[i]
curr_sums -= nums[i-k]
max_sums = max(
max_sums,
curr_sums
)
return max_sums / k