[1052][中等][滑动窗口] 爱生气的书店老板
题目描述
输入:customers = [1,0,1,2,1,1,7,5], grumpy = [0,1,0,1,0,1,0,1], X = 3
输出:16
解释:
书店老板在最后 3 分钟保持冷静。
感到满意的最大客户数量 = 1 + 1 + 1 + 1 + 7 + 5 = 16.解题思路
最后更新于
输入:customers = [1,0,1,2,1,1,7,5], grumpy = [0,1,0,1,0,1,0,1], X = 3
输出:16
解释:
书店老板在最后 3 分钟保持冷静。
感到满意的最大客户数量 = 1 + 1 + 1 + 1 + 7 + 5 = 16.最后更新于
class Solution:
def maxSatisfied(self, customers: List[int], grumpy: List[int], X: int) -> int:
n = len(customers)
base, window = 0, 0
for i in range(X):
base += customers[i] * (1 - grumpy[i])
window += customers[i] * grumpy[i]
max_window = window
for i in range(X, n):
base += customers[i] * (1 - grumpy[i])
window = window + customers[i] * grumpy[i] - customers[i - X] * grumpy[i - X]
max_window = window if window > max_window else max_window
return base + max_window