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

闪念标签:LC

题目链接:https://leetcode.cn/problems/number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold/