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 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始
廣告