QUESTION
easy
题目描述
给定 n
个整数,找出平均数最大且长度为 k
的连续子数组,并输出该最大平均数。
示例 1:
输入: [1,12,-5,-6,50,3], k = 4
输出: 12.75
解释: 最大平均数 (12-5-6+50)/4 = 51/4 = 12.75
说明
- 1 <= k <= n <= 30,000。
- 所给数据范围 [-10,000,10,000]。
SOLUTION
这题没啥好说的
方法一
类似一个长度为 k
的滑动窗口
avg
用来保存当前窗口内所有数字的和max
用于记录最大的和
class Solution {
public:
double findMaxAverage(vector<int>& nums, int k) {
int avg = 0, max = 0, n = nums.size();
for(int i = 0; i < k; i++) avg += nums[i];
max = avg;
for(int i = 1; i+k-1 < n; i++){
avg -= nums[i-1];
avg += nums[i+k-1];
if(avg > max) max = avg;
}
return max / double(k);
}
};