# 1343. Number of Sub-arrays of Size K and Average Greater than or Equal to Threshold

Given an array of integers `arr` and two integers `k` and `threshold`, return *the number of sub-arrays of size `k` and average greater than or equal to *`threshold`.

Example 1:

Input: arr = [2,2,2,2,5,5,5,8], k = 3, threshold = 4
Output: 3
Explanation: Sub-arrays [2,5,5],[5,5,5] and [5,5,8] have averages 4, 5 and 6 respectively. All other sub-arrays of size 3 have averages less than 4 (the threshold).

Example 2:

Input: arr = [11,13,17,23,29,31,7,5,2,3], k = 3, threshold = 5
Output: 6
Explanation: The first 6 sub-arrays of size 3 have averages greater than 5. Note that averages are not integers.

Constraints:

• `1 <= arr.length <= 10^5`
• `1 <= arr[i] <= 10^4`
• `1 <= k <= arr.length`
• `0 <= threshold <= 10^4`

``````class Solution {
public:
int numOfSubarrays(vector<int>& arr, int k, int threshold) {
int res = 0, n = arr.size(), target = k * threshold;
vector<int> sums(n + 1);
for (int i = 1; i <= n; ++i) {
sums[i] = sums[i - 1] + arr[i - 1];
}
for (int i = k; i <= n; ++i) {
int sum = sums[i] - sums[i - k];
if (sum >= target) ++res;
}
return res;
}
};
``````

``````class Solution {
public:
int numOfSubarrays(vector<int>& arr, int k, int threshold) {
int res = 0, n = arr.size(), sum = 0, target = k * threshold;
for (int i = 0; i < n; ++i) {
sum += arr[i];
if (i >= k) sum -= arr[i - k];
if (i >= k - 1 && sum >= target) ++res;
}
return res;
}
};
``````

Github 同步地址:

https://github.com/grandyang/leetcode/issues/1343

Count Subarrays With Median K

https://leetcode.com/problems/number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold

https://leetcode.com/problems/number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold/solutions/503786/c-short-solution/

https://leetcode.com/problems/number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold/solutions/502740/java-python-3-2-codes-prefix-sum-and-sliding-window-w-analysis/

LeetCode All in One 题目讲解汇总(持续更新中…)

（欢迎加入博主的知识星球，博主将及时答疑解惑，并分享刷题经验与总结，快快加入吧～）

|

Venmo 打赏

—|—

 微信打赏 Venmo 打赏
（欢迎加入博主的知识星球，博主将及时答疑解惑，并分享刷题经验与总结，试运营期间前五十位可享受半价优惠～）

×

Help us with donation