给定一个由n
个整数组成的数组,找到给定长度k
的连续子数组,该子数组具有最大平均值。你需要输出最大平均值。
样例
样例1
输入: nums = [1,12,-5,-6,50,3] and k = 4
输出: 12.75
解释:
最大平均为(12-5-6+50)/4 = 51/4 = 12.75
样例2
输入: nums = [4,2,1,3,3] and k = 2
输出: 3.00
解释:
最大平均为(3+3)/2 = 6/2 = 3.00
注意事项
1 <= k <= n <= 30,000
.
给定数组的元素范围是[-10,000, 10,000]
。
class Solution {
public:
/**
* @param nums: an array
* @param k: an integer
* @return: the maximum average value
*/
double findMaxAverage(vector<int> &nums, int k) {
// Write your code here
int sum = 0;
int j = k - 1;
int max;
// 记录前k次的和
for (int l = 0; l <= j; l++) {
sum += nums[l];
}
max = sum;
j++;
// 滑动窗口,每次的和减去上次的头加上本次的尾
while (j < nums.size())
{
sum = sum - nums[j - k] + nums[j];
if (sum > max) {
max = sum;
}
j++;
}
return (double) max / k;
}
};