Given an array consisting of n integers, find the contiguous subarray of a given length k that has the maximum average value. And you need to output the maximum average value.
Example:
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
Approach:
C++
#include <bits/stdc++.h>using namespace std;double findMaxAverage(vector<int> &nums, int k){double maxAns = INT_MIN;double sum = 0;for (int i = 0; i < k; i++){sum += nums[i];}maxAns = max(maxAns, sum / k);for (int i = k; i < nums.size(); i++){sum += nums[i];sum -= nums[i - k];maxAns = max(maxAns, sum / k);}return maxAns;}int main(){vector<int> nums={1,12,-5,-6,50,3};int k = 4;cout<<findMaxAverage(nums,k);return 0;}
No comments:
Post a Comment