643. 子数组最大平均数 I
题目链接:https://leetcode.cn/problems/maximum-average-subarray-i/
代码
ts
/**
* 643. 子数组最大平均数 I
* https://leetcode.cn/problems/maximum-average-subarray-i/
*/
function findMaxAverage(nums: number[], k: number): number {
let res = -Infinity, sum = 0;
for (let i = 0; i < nums.length; i++) {
sum += nums[i];
if (i - k >= 0) {
sum -= nums[i - k];
}
if (i - k + 1 >= 0) {
res = Math.max(res, sum);
}
}
return res / k;
}思路
使用滑动窗口的思想:
维护一个长度为
k的窗口,用sum记录当前窗口的和当窗口右移时,加上新元素,减去离开窗口的元素
当窗口大小达到
k时,更新最大平均值时间复杂度
,只需遍历一次数组空间复杂度