题目需求
很明显最简单的方式便是采用滑动窗口的方式,计算k个窗口的和,然后随着 i 的移动,加上nums[i],再减去nums[i - k],将sum与maxsum比较即可;
流程展示:
代码实现
class Solution {
public:
double findMaxAverage(vector<int>& nums, int k)
{
int i;
int maxsum = 0, sum = 0;
if(nums.size() == 0)
return double(0);
for(i = 0;i < k;++i)
sum += nums[i];
maxsum = sum;
for(i = k; i < nums.size(); ++i)
{
sum -= nums[i-k];
sum += nums[i];
if(sum > maxsum)
maxsum = sum;
}
return double(maxsum)/k;
}
};