Maximum Average of a Fixed Window

easy array sliding window

Problem

Given an array nums and an integer k, return the largest average of any contiguous subarray of length exactly k. Slide a fixed-length window across the array and update the running sum in constant time per step.

Inputnums = [4, 1, 7, 3, 8, 2], k = 3
Output6.0
Window [7, 3, 8] has sum 18, the largest among the four windows of length 3.

def max_average(nums, k):
    s = sum(nums[:k])
    best = s
    for i in range(k, len(nums)):
        s += nums[i] - nums[i - k]
        if s > best:
            best = s
    return best / k
function maxAverage(nums, k) {
  let sum = 0;
  for (let i = 0; i < k; i++) sum += nums[i];
  let best = sum;
  for (let i = k; i < nums.length; i++) {
    sum += nums[i] - nums[i - k];
    if (sum > best) best = sum;
  }
  return best / k;
}
class Solution {
    public double maxAverage(int[] nums, int k) {
        int sum = 0;
        for (int i = 0; i < k; i++) sum += nums[i];
        int best = sum;
        for (int i = k; i < nums.length; i++) {
            sum += nums[i] - nums[i - k];
            if (sum > best) best = sum;
        }
        return (double) best / k;
    }
}
double maxAverage(vector<int>& nums, int k) {
    int sum = 0;
    for (int i = 0; i < k; i++) sum += nums[i];
    int best = sum;
    for (int i = k; i < (int)nums.size(); i++) {
        sum += nums[i] - nums[i - k];
        if (sum > best) best = sum;
    }
    return (double)best / k;
}
Time: O(n) Space: O(1)