All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g0601_0700.s0643_maximum_average_subarray_i.Solution Maven / Gradle / Ivy

There is a newer version: 1.38
Show newest version
package g0601_0700.s0643_maximum_average_subarray_i;

// #Easy #Array #Sliding_Window #2022_03_21_Time_5_ms_(74.81%)_Space_58.3_MB_(84.86%)

/**
 * 643 - Maximum Average Subarray I\.
 *
 * Easy
 *
 * 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
**/
public class Solution {
    public double findMaxAverage(int[] nums, int k) {
        double windowSum = 0;
        int windowStart = 0;
        double max = Integer.MIN_VALUE;
        for (int windowEnd = 0; windowEnd < nums.length; ++windowEnd) {
            windowSum += nums[windowEnd];
            if (windowEnd >= k - 1) {
                double candidate = windowSum / k;
                max = Math.max(candidate, max);
                windowSum -= nums[windowStart];
                windowStart++;
            }
        }
        return max;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy