Maximum Average Subarray I

Problem

You are given an integer array nums consisting of n elements, and an integer k.

Find a contiguous subarray whose length is equal to k that has the maximum average value and return this value. Any answer with a calculation error less than 10-5 will be accepted.

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

Constraints:

  • n == nums.length
  • 1 <= k <= n <= 105
  • -104 <= nums[i] <= 104

Solution

class Solution {
    public double findMaxAverage(int[] nums, int k) {
        var max = (double) Integer.MIN_VALUE;
        var sum = 0;
        // read in the first k - 1 numbers
        for (var i = 0; i < k - 1; i++) {
            sum += nums[i];
        }
        for (var i = k - 1; i < nums.length; i++) {
            sum += nums[i];
            max = Math.max(sum / (double) k, max);
            // clean slate for the next iteration
            sum -= nums[i - (k - 1)];
        }
        return max;
    }
}

Recent posts from blogs that I like

Jerusalem Delivered: 3 Capture of Jerusalem

A mystic dies from burns after an ordeal by fire, Jerusalem is put under siege, then on 13 July they take the Holy City and start massacring its inhabitants. Few return alive to Europe.

via The Eclectic Light Company

Large tech companies don't need heroes

Large tech companies operate via systems. What that means is that the main outcomes - up to and including the overall success or failure of the company - are driven by a complex network of processes and incentives. These systems are outside the control of any particular person. Like the parts of a l...

via Sean Goedecke

How StrongDM's AI team build serious software without even looking at the code

via Simon Willison