数组——定长滑动窗口:1343. 大小为 K 且平均值大于等于阈值的子数组数目
题目
1343. 大小为 K 且平均值大于等于阈值的子数组数目
 
题目重构
返回数组arr中长度为k且平均值大于等于threshold的子数组数目。
思路
这道题比较简单。可以发现与643. 子数组最大平均数 I这道题高度相似。同样我们定义sum作为子数组之和,count作为满足要求的子数组数目。对于前k个数据,累加到sum中即可。直到第k个元素,进行以下操作:判断count/k是否大于等于threshold,是就加1,然后移除窗口最左边的数据。
代码
int count = 0, sum = 0;for (int i = 0; i < arr.size(); ++i) {sum += arr[i];if (i < k - 1) continue;count += sum >= k * threshold;sum -= arr[i -k + 1];
}
return count;
 
评价
时间复杂度:O(n),其中 n 是 arr 的长度。
