Maximum Average Subarray I

Given an array consisting of n integers, find the contiguous subarray of given length k that has the maximum average value. And you need to output the maximum average value.

Example 1:
Input: [1,12,-5,-6,50,3], k = 4
Output: 12.75
Explanation: Maximum average is (12-5-6+50)/4 = 51/4 = 12.75
Note:
1 <= k <= n <= 30,000.
Elements of the given array will be in the range [-10,000, 10,000].

#include <iostream>
#include <vector>
#include <cassert>

using namespace std;

class Solution {
public:
    double findMaxAverage(vector<int>& nums, int k) {
        int size=nums.size();
        assert(size>0 && k>0 && k<=size);

        double res;
        double sum=0;
        
        //init res
        for(int i=0;i<k;i++){
            
            sum+=nums[i];
            res=sum;
        }
        //slide window maintain k elements,
        //when add nums[i],delete nums[i-k]
        for(int i=k;i<size;i++){
            
            sum=sum+nums[i]-nums[i-k];
            res=max(res,sum);
        }

        return res/k;
    }
};

int main(){
    int arr[]={1,12,-5,-6,50,3};
    vector<int> vec(arr,arr+sizeof(arr)/sizeof(int));
    int k=4;
    cout<<Solution().findMaxAverage(vec,4)<<endl;

    return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容