假设我们有一个列表num,以及两个附加值k和target,我们必须找到大小为k且平均值≥target的子列表的数量。
因此,如果输入像nums = [1,10,5,6,7] k = 3 target = 6,则输出将为2,因为子列表[1,10,7]的平均值为6, [10,5,6]的平均值为7。
为了解决这个问题,我们将按照以下步骤操作:
目标:=目标* k
sum:= 0,ans:= 0
对于每个索引i和以数字为单位的n,请执行
如果总和> =目标,则
回答:=回答+1
sum:= sum-nums [i-k]
如果i> = k,则
和:= sum + n
如果i> =(k-1),则
返回ans
让我们看下面的实现以更好地理解:
class Solution: def solve(self, nums, k, target): target *= k sum = 0 ans = 0 for i, n in enumerate(nums): if i >= k: sum -= nums[i - k] sum += n if i >= (k - 1): if sum >= target: ans += 1 return ans ob = Solution()nums = [1, 10, 5, 6, 7] k = 3 target = 6 print(ob.solve(nums, k, target))
[1, 10, 5, 6, 7], 3, 6
输出结果
2