643. 子数组最大平均数 I
题意
给定数组 nums 和整数 k,在所有长度为 k 的连续子数组中,找出最大的平均值。结果允许 10^-5 以内的误差。
样例 1
解释:最大平均数为 (12-5-6+50) / 4 = 51 / 4 = 12.75。
样例 2
解题思路
窗口长度始终是 k。先让右端点向右走,凑出第一个窗口并计算平均值。之后每轮从总和中减去左端点的数,左端点右移;下一轮再加入右边的新数。这样不需要为每个窗口重新求和。
代码里的 right 指向下一个要加入的元素。每次计算平均值时,当前窗口恰好是 [left, right),长度为 k。最后一个窗口计算完后,right 已经到达数组末尾,循环结束。
我的代码
时间复杂度 O(n),空间复杂度 O(1)。maxAvg 的初始值低于题目允许的最小平均值,因此不会影响结果。