09 Sept 2026Go / Python / TypeScriptEasy

Maximum Average Subarray I

Find the contiguous subarray of fixed length with the greatest average.

Maintain a fixed-size sliding-window sum, updating it by adding the entering value and subtracting the leaving value.

complexity

O(n) time and O(1) extra space.

solution files

  • Go maximum-average-subarray-i/solution.go
  • Python maximum-average-subarray-i/solution.py
  • TypeScript maximum-average-subarray-i/solution.ts

Solution files

Gomaximum-average-subarray-i/solution.go
package main

func findMaxAverage(nums []int, k int) float64 {
	windowSum := 0
	for index := 0; index < k; index++ {
		windowSum += nums[index]
	}
	best := windowSum
	for index := k; index < len(nums); index++ {
		windowSum += nums[index] - nums[index-k]
		if windowSum > best {
			best = windowSum
		}
	}
	return float64(best) / float64(k)
}
Pythonmaximum-average-subarray-i/solution.py
class Solution:
    def findMaxAverage(self, nums: list[int], k: int) -> float:
        window_sum = sum(nums[:k])
        best = window_sum
        for index in range(k, len(nums)):
            window_sum += nums[index] - nums[index - k]
            best = max(best, window_sum)
        return best / k
TypeScriptmaximum-average-subarray-i/solution.ts
function findMaxAverage(nums: number[], k: number): number {
  let windowSum = class="syntax-number">0;
  for (let index = class="syntax-number">0; index < k; index += class="syntax-number">1) windowSum += nums[index];
  let best = windowSum;
  for (let index = k; index < nums.length; index += class="syntax-number">1) {
    windowSum += nums[index] - nums[index - k];
    best = Math.max(best, windowSum);
  }
  return best / k;
}