Python程序:查找平均值大于或等于目标值的K长度子列表数量


假设我们有一个列表nums,以及两个附加值k和target,我们需要找到大小为k且平均值≥target的子列表的数量。

例如,如果输入是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
  • 返回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

更新于:2020年11月25日

203 次浏览

开启您的职业生涯

完成课程获得认证

开始
广告