题目地址:
给定一个长 n n n的数组 A A A和一个正整数 k k k,以及一个整数 t t t,问 A A A里有多少个长 k k k的子数组其平均值大于等于 t t t。
直接枚举所有长 k k k的子数组即可。代码如下:
public class Solution {
public int numOfSubarrays(int[] arr, int k, int threshold) {
int sum = 0;
for (int i = 0; i < k; i++) {
sum += arr[i];
}
int res = sum >= threshold * k ? 1 : 0;
for (int i = k; i < arr.length; i++) {
sum += arr[i] - arr[i - k];
res += sum >= threshold * k ? 1 : 0;
}
return res;
}
}
时间复杂度 O ( n ) O(n) O(n),空间 O ( 1 ) O(1) O(1)。