Написано: 14.03.2023

643. Максимальный средний подмассив I (Maximum Average Subarray I)

easy

Задание.

Даны целочисленный массив nums, состоящий из n элементов и целое число k.

Найдите непрерывный подмассив, длина которого равна k, который имеет максимальное среднее значение, и верните значение среднего. Будет принят любой ответ с ошибкой вычисления менее 10^(-5).

Пример 1.

Входные данные: nums = [1,12,-5,-6,50,3], k = 4

Результат: 12.75000

Пояснение: Максимальное среднее значение составляет (12 - 5 - 6 + 50) / 4 = 51 / 4 = 12.75

Пример 2.

Входные данные: nums = [5], k = 1

Результат: 5.00000

Решение.

class Solution {
public:
    double findMaxAverage(vector<int>& nums, int k) {
        int max = INT_MIN, j = 0, sum = 0, len = nums.size();
        double avg = 0;
        for(int i = 0; i < len; i++) {
            sum += nums[i];
            if(i >= k-1) {
                if(sum > max) {
                    max = sum;
                }
                sum -= nums[j]; // убираем из суммы начальный элемент
                j++;
            }
        }
        avg = max * 1.0 / k;
        return avg;
    }
};

Способ решения.

LeetCode-000643