func numOfSubarrays(arr []int, k int, threshold int) int {
n := len(arr)
l, r := 0, -1
sum := 0
ans := 0
for r < n - 1 {
for r - l + 1 < k && r < n - 1 {
r ++
sum += arr[r]
}
if r - l + 1 == k && l < n {
if threshold <= sum / k {
ans ++
}
sum -= arr[l]
l ++
}
}
return ans
}
另外一种方法,参考灵神,无需维护双指针,直接遍历,这也是一个有点意思的方法:
func numOfSubarrays(arr []int, k int, threshold int) int {
sum := 0
ans := 0
for i, x := range arr {
sum += x
if i < k - 1 {
continue
}
if sum >= k * threshold {
ans ++
}
sum -= arr[i - k + 1]
}
return ans
}