49 lines
1.2 KiB
C++
49 lines
1.2 KiB
C++
// Source : https://leetcode.com/problems/maximum-average-subarray-i/description/
|
|
// Author : Hao Chen
|
|
// Date : 2018-04-19
|
|
|
|
/***************************************************************************************
|
|
*
|
|
*
|
|
* 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: aximum average is (12-5-6+50)/4 = 51/4 = 12.75
|
|
*
|
|
*
|
|
*
|
|
* Note:
|
|
*
|
|
* 1 k n
|
|
* Elements of the given array will be in the range [-10,000, 10,000].
|
|
*
|
|
***************************************************************************************/
|
|
|
|
class Solution {
|
|
public:
|
|
double findMaxAverage(vector<int>& nums, int k) {
|
|
int sum=0;
|
|
for(int i=0; i<k; i++ ) {
|
|
sum += nums[i];
|
|
}
|
|
|
|
int s = sum;
|
|
for (int i=k; i< nums.size(); i++) {
|
|
s += nums[i];
|
|
s -= nums[i-k];
|
|
|
|
if (s > sum) {
|
|
sum = s;
|
|
}
|
|
}
|
|
return (double)sum/k;
|
|
}
|
|
};
|
|
|