Leetcode/LeetCode75

[Sliding Window][Easy] 643. Maximum Average Subarray I

자전거통학 2023. 12. 3. 09:40

https://leetcode.com/problems/maximum-average-subarray-i/description

 

Maximum Average Subarray I - LeetCode

Can you solve this real interview question? Maximum Average Subarray I - 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 thi

leetcode.com

 

Q. 연속된 sub array의 길이가 k 인 것중 그 평균값이 가장 큰 값을 찾아라. 

 

Solution. 

 Sliding window 유형의 가장 기본 적인 문제. 다만 함정이라면, 결과로 return할 double type의 최소값을 설정하는 방법. int 하고는 약간 달랐다. 

 

double findMaxAverage(vector<int>& nums, int k)
{
    // double의 positive일때 최대, 최소값이 DBL_MIN, MAX다. 
    // 이를 이용해 구간전체 최소값으로 최기화가 필요하다.
    double ret = -DBL_MAX;
    int sum = 0;
    int left = 0;
    for (int right = 0; right < nums.size(); ++right)
    {
        sum += nums[right];

        if (right - left + 1 == k)
        {
            ret = max(ret, ((double)sum) / ((double)k));
            sum -= nums[left++];
        }
    }
    return ret;
}