class Solution {
public:
double findMaxAverage(vector<int>& nums, int k) {
// prefix_sum表示在下标i之前的元素之和
vector<double> prefix_sum(nums.size()+1, 0);
for(int i = 1; i < nums.size(); ++i) {
prefix_sum[i] = prefix_sum[i-1] + nums[i-1];
}
// 记录全部数组的和
prefix_sum[nums.size()] = prefix_sum[nums.size()-1] + nums[nums.size()-1];
double res = INT_MIN;
for(int i = 0; i + k <= nums.size(); ++i) {
// 通过前缀数组求区间和
res = max(res, (prefix_sum[i+k] - prefix_sum[i])/k);
}
return res;
}
};