643. 子数组最大平均数 I

643. 子数组最大平均数 I

一、题目描述

给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数。

二、解题思路

因为是连续子数组,所以直接使用滑动窗口来计算就行。

下一个和 = 上一个和 - 窗口第1个元素 + 新元素

三、复杂度分析

  • 时间 O(n)
  • 空间 O(1)

四、参考代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/**
* 最大平均数
* @param nums 数组
* @param k 数量
* @return 最大平均数
*/
private double findMaxAverage(int[] nums, int k) {
int maxSum = 0;
for (int i = 0; i < k; i++) {
maxSum += nums[i];
}
for (int i = k, sum = maxSum; i < nums.length; i++) {
sum = sum - nums[i - k] + nums[i];
if (sum > maxSum) {
maxSum = sum;
}
}
return maxSum * 1.0 / k;
}
作者

jiaduo

发布于

2022-09-18

更新于

2023-04-02

许可协议