使用窗口滑动求解总和
总和 = 前一个总和 + 新增的元素数值 - 删除滑动元素数值
例题:给你一个整数数组 arr 和两个整数 k 和 threshold
请你返回长度为 k 且平均值大于等于 threshold 的子数组数目
示例:输入 arr = [1,1,1,1,1], k = 1, threshold = 0``
输出:5
思路:先求k*threshold的总和
用窗口滑动求出子数组的总和,并计数
代码:
public int numOfSubarrays(int[] arr, int k, int threshold) {
int sum = k * threshold ;
int subSum = 0;
for(int i =0 ;i < k; i++){
subSum += arr[i];
}
int count = 0;
if(subSum >= sum){
count = 1; }
for(int j = k; j< arr.length; j++){
subSum -= arr[j-k];
subSum += arr[j];
if(subSum >= sum){
count ++;
}
}
return count;
}