题目
给你一个由 n 个元素组成的整数数组 nums 和一个整数 k 。
请你找出平均数最大且 长度为 k 的连续子数组,并输出该最大平均数。
任何误差小于 10-5 的答案都将被视为正确答案。
题解
经典的滑动窗口
public static double findMaxAverage(int[] nums, int k) {
// k == 1 时候 直接返回最大值的double类型
if (k == 1) {
Arrays.sort(nums);
return 1.0* (nums[nums.length-1]);
}
//
int curSum = 0;
for (int i = 0; i < k; i++) {
curSum += nums[i];
}
int left =0;
int right = left + k;
int maxSum = curSum;
while (right < nums.length) {
curSum = curSum - nums[left] + nums[right];
maxSum = Math.max(curSum, maxSum);
left++;
right++;
}
return 1.0 * maxSum/k;
}