子数组最大平均数
问题:
给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数。
思路:
以 k 长度为单位滑动窗口求和,找出最大和再除以 k。
class Solution {
public:
double findMaxAverage(const vector<int>& nums, int& k) const {
auto temp = k;
auto temp_Sum = 0;
while(temp-- > 0) {
temp_Sum += nums[temp];
}
auto max_Sum = temp_Sum;
for(auto i = k; i < nums.size(); ++i) {
temp_Sum = temp_Sum - nums[i - k] + nums[i];
max_Sum = max(max_Sum, temp_Sum);
}
return static_cast<double>(max_Sum) / k;
}
};