给定 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]。
解答
思路:滑动窗口求最大值再求平均,注意强制类型转换
复杂度分析:
时间复杂度:O(n)
空间复杂度:O(1)
class Solution {
public:
double findMaxAverage(vector<int>& nums, int k) {
int sum = 0;
for(int i=0; i<k; i++)
sum += nums[i];
int i = 0;
int j = k;
int temp = sum;
while(j<nums.size())
{
temp = temp - nums[i] + nums[j];
sum = max(sum,temp);
i++;
j++;
}
return double(sum)/k;
}
};