每日一题:643. 子数组最大平均数 I
作者:互联网
经典滑动窗口
左指针和右指针不断向右移动,达到求出所有子数组的目的
再进行/k就得到了平均数
因为double的计算比int慢 所以只在最终求结果时将sum转成double类型
sum就是需要维护的总数 每次减去出队的第一个再加上进队的最后一个即可
class Solution {
public double findMaxAverage(int[] nums, int k) {
double ans = -9999999;
int left = 0,right = 0;
int sum = 0;
for (int i=0;i<k;i++){
sum+=nums[right];
right++;
}
ans=Math.max((double)sum/k,ans);
while(right<nums.length){
sum-=nums[left];
left++;
sum+=nums[right];
right++;
ans=Math.max((double)sum/k,ans);
}
return ans;
}
}
标签:right,nums,int,平均数,sum,double,643,数组,ans 来源: https://blog.csdn.net/weixin_45221477/article/details/113638362