Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm số lượng danh sách con K-Length có giá trị trung bình lớn hơn hoặc bằng với mục tiêu trong python

Giả sử chúng ta có một số danh sách và hai giá trị bổ sung k và target, chúng ta phải tìm số lượng danh sách con có kích thước là k và giá trị trung bình của nó là target.

Vì vậy, nếu đầu vào là nums =[1, 10, 5, 6, 7] k =3 target =6, thì đầu ra sẽ là 2, vì danh sách con [1, 10, 7] có giá trị trung bình là 6 và [10, 5, 6] có mức trung bình là 7.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau:

  • target:=target * k
  • sum:=0, ans:=0
  • đối với mỗi chỉ số i và số n trong nums, thực hiện
    • nếu tôi> =k, thì
      • sum:=sum - nums [i - k]
    • sum:=sum + n
    • nếu tôi> =(k - 1), thì
      • nếu sum> =target, thì
        • ans:=ans + 1
  • trả lại ans

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn:

Mã mẫu

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))

Đầu vào

[1, 10, 5, 6, 7], 3, 6

Đầu ra

2