美文网首页
Maximum Average Subarray I

Maximum Average Subarray I

作者: 极速魔法 | 来源:发表于2017-07-23 09:43 被阅读6次

    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;
    }
    

    相关文章

      网友评论

          本文标题:Maximum Average Subarray I

          本文链接:https://www.haomeiwen.com/subject/pdwpkxtx.html