河南网站建设,wordpress查询收录,网站开发与维护的工作内容,重庆双福建设开发有限公司网站文章目录 题目描述题解思路题解代码 题目描述 题解思路
题目让我们求长度为k的子数组并且该子数组的平均值大于threshold#xff0c;对于这题#xff0c;我们可以考虑维护一个长度为k的窗口#xff0c;窗口不断向右滑动#xff0c;遍历所有长度为k的子数组#xff0c;我们… 文章目录 题目描述题解思路题解代码 题目描述 题解思路
题目让我们求长度为k的子数组并且该子数组的平均值大于threshold对于这题我们可以考虑维护一个长度为k的窗口窗口不断向右滑动遍历所有长度为k的子数组我们计算窗口内的平均数如果大于等于阈值threshold则结果数加一而计算窗口内的平均数可以通过窗口内的和除以k得到所以对于窗口来说我们只需要维护窗口内所有元素的和即可
题解代码
class Solution:def numOfSubarrays(self, arr: List[int], k: int, threshold: int) - int:n len(arr)if n k:return 0# 维护长度为k的窗口和s sum(arr[:k])# 满足条件的个数ans 0if s // k threshold:# 窗口内元素的平均值大于等于阈值增加答案ans 1for i in range(k, n):# 当前数字加入窗口窗口最左侧的数字移出窗口s arr[i] - arr[i-k] if s // k threshold:# 窗口内元素的平均值大于等于阈值则增加答案ans 1return ans