Python程式:查詢平均值大於或等於目標值的K長度子列表數量
假設我們有一個列表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
- 對於nums中的每個索引i和數字n:
- 如果i >= k,則
- sum := sum - nums[i - k]
- sum := sum + n
- 如果i >= (k - 1),則
- 如果sum >= target,則
- ans := ans + 1
- 如果sum >= target,則
- 如果i >= k,則
- 返回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
廣告