题目描述

自己解法
从数组的第k个元素开始遍历,每次减去开头元素,加上末尾元素,进行判断即可。时间复杂度O(n)O(n)O(n),空间复杂度O(1)O(1)O(1)。
class Solution:
def numOfSubarrays(self, arr: List[int], k: int, threshold: int) -> int:
sub = sum(arr[:k])
ans = 1 if sub >= threshold * k else 0
for i in range(k,len(arr)):
sub += arr[i] - arr[i-k]
if sub >= threshold * k:
ans += 1
return ans

题解区
没有找到更好的思路。
本文介绍了一种求解子数组平均值是否大于等于给定阈值的算法,通过一次遍历实现,时间复杂度为O(n),空间复杂度为O(1)。算法从数组第k个元素开始,每次迭代更新子数组的和,判断是否满足条件。
- LeetCode&spm=1001.2101.3001.5002&articleId=107142144&d=1&t=3&u=4c98dd4f677f4bacacc3b7643d556708)
949

被折叠的 条评论
为什么被折叠?



