题目描述
题解思路
长度为k且平均值大于等于阈值的子数组数目 等于 长度为k且总和大于等于k * 阈值的子数组数目
我们遍历长度为k的窗口,我们只需要记录窗口内的总和即可,遍历过程中记录总和大于等于k * 阈值的子数组数目
题解代码
impl Solution {
pub fn num_of_subarrays(arr: Vec<i32>, k: i32, threshold: i32) -> i32 {
let threshold = k * threshold;
let mut ans = 0;
let mut sum = 0;
for i in 0..k as usize {
sum += arr[i];
}
if sum >= threshold {
ans += 1;
}
for i in k as usize..arr.len() {
sum += arr[i] - arr[i - k as usize];
if sum >= threshold {
ans += 1;
}
}
ans
}
}