1343. 大小为 K 且平均值大于等于阈值的子数组数目
代码
ts
/**
* 1343. 大小为 K 且平均值大于等于阈值的子数组数目
* https://leetcode.cn/problems/number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold
*/
function numOfSubarrays(arr: number[], k: number, threshold: number): number {
const tk = threshold * k;
let sum = 0;
let res = 0;
for (let i = 0; i < arr.length; i++) {
sum += arr[i];
if (i - k >= 0) {
sum -= arr[i - k];
}
if (i - k + 1 >= 0 && sum >= tk) {
res++;
}
}
return res;
}思路
使用滑动窗口:
维护一个长度为
k的窗口,用sum记录当前窗口的和为了避免浮点数比较,将条件
sum / k >= threshold转换为sum >= threshold * k当窗口大小达到
k时,如果sum >= threshold * k,则计数加一时间复杂度
,只需遍历一次数组 空间复杂度