在Python中查找平均值大于或等于目标的K长度子列表的程序
假设我们有一个列表nums和两个额外的值k和target,我们必须找到其大小为k且平均值≥目标的子列表的数量。
因此,如果输入如下nums =[1,10,5,6,7] k = 3 target = 6,则输出为2,因为子列表 [1,10,7] 的平均值为6, [10,5,6] 的平均值为7。
为了解决这个问题,我们将按照以下步骤进行:
- target := target * k
- sum := 0,ans := 0
- 对于nums中的每个索引i和数字n,执行以下操作
- 如果i >= k,那么
- sum := sum – nums [i-k]
- sum := sum + n
- 如果i >=(k – 1) ,那么
- 如果sum >= target,那么
- ans := ans + 1
- 如果i >= k,那么
- 返回 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