JZX轻语:简
LeetCode 1343 - 大小为 K 且平均值大于等于阈值的子数组数目
发表于2024年07月31日
本质就是求解和大于等于k * threshold
的子数组数目。使用一个定长为k
的滑动窗口,每次移动窗口时,只需要减去左边界的值,加上右边界的值,然后判断是否满足条件即可。
class Solution:
def numOfSubarrays(self, arr: List[int], k: int, threshold: int) -> int:
cur_sum = sum(arr[i] for i in range(k))
l, r = 0, k # 左闭右开
threshold *= k
ans = int(cur_sum >= threshold)
while r < len(arr):
cur_sum = cur_sum - arr[l] + arr[r]
ans += (cur_sum >= threshold)
l += 1
r += 1
return ans