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

在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
  • 返回 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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程