【题目】
给定 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]。
【代码】
class Solution {
public:
double findMaxAverage(vector<int>& nums, int k) {
int len=nums.size();
float avg=0,maxavg=0;
for(int i=0;i<len-4;i++){
avg=0;
for(int j=0;j<k;j++)
avg+=nums[j+i];
maxavg=max(maxavg,avg);
}
return (maxavg*1.0)/k;
}
};
【法二】
class Solution {
public:
double findMaxAverage(vector<int>& nums, int k) {
int sum=0,len=nums.size(),tempavg=0,maxavg=0;
for(int i=1;i<len;i++)
nums[i]+=nums[i-1];
tempavg=nums[k-1];
maxavg=tempavg;
for(int i=k;i<len&&i-k>=0;i++){
tempavg=nums[i]-nums[i-k];
maxavg=max(maxavg,tempavg);
}
return maxavg*1.0/k;
}
};