สมมติว่ามีรายการ 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- วนลูปแต่ละ index
iและค่าn:- ถ้า
i >= k:sum -= nums[i - k](เลื่อน sliding window) sum += n- ถ้า
i >= k - 1และsum >= target: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