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
- nếu sum> =target, thì
- nếu tôi> =k, thì
- 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