สมมติว่าเรามีรายการหมายเลข และค่าเพิ่มเติม 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
- ถ้า sum>=เป้าหมาย แล้ว
- ถ้าฉัน>=k แล้ว
- คืนสินค้า
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น:
โค้ดตัวอย่าง
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