Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมค้นหาจำนวนรายการย่อย K-Length ที่มีค่าเฉลี่ยมากกว่าหรือเท่ากับเป้าหมายใน python


สมมติว่าเรามีรายการหมายเลข และค่าเพิ่มเติม k และเป้าหมายสองค่า เราต้องหาจำนวนรายการย่อยที่มีขนาดเป็น k และค่าเฉลี่ยของรายการนั้น ≥ เป้าหมาย

ดังนั้น หากอินพุตเป็น nums =[1, 10, 5, 6, 7] k =3 เป้าหมาย =6 ผลลัพธ์จะเป็น 2 เนื่องจากรายการย่อย [1, 10, 7] มีค่าเฉลี่ย 6 และ [10, 5, 6] มีค่าเฉลี่ย 7

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้:

  • เป้าหมาย :=เป้าหมาย * k
  • sum :=0, ans :=0
  • สำหรับแต่ละดัชนี i และตัวเลข n เป็น nums ให้ทำ
    • ถ้าฉัน>=k แล้ว
      • sum :=sum - nums[i - k]
    • sum :=sum + n
    • ถ้าฉัน>=(k - 1) แล้ว
      • ถ้า sum>=เป้าหมาย แล้ว
        • อัน :=ans + 1
  • คืนสินค้า

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น:

โค้ดตัวอย่าง

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