寻找我们可以在 Python 中快乐的最大人数的程序
假设我们有一个列表客户和另一个列表情绪,这两个长度相同,我们还有另一个整数k。现在每分钟i,customers[i]人来到商店,当心情[i]=1时,表示顾客很高兴,当心情[i]=0时,他们很伤心。我们可以将情绪大小为k的子列表设置为1s,最后我们必须找到可以让我们开心的最大人数。
所以,如果输入像customers=[2,3,6,6,3]心情=[1,1,0,0,0]k=2,那么输出将是17,因为如果我们设置心情[2]和心情[3]为1,那么总心情将为2+3+6+6=17位客户满意。
示例
让我们看看以下实现以获得更好的理解-
def solve(customers, mood, k): n = len(mood) a = [0] * (n + 1) s = 0 for i in range(n): a[i + 1] = a[i] if mood[i]: s += customers[i] else: a[i + 1] += customers[i] d = 0 for i in range(k, n + 1): d = max(d, a[i] - a[i - k]) return s + d customers = [2, 3, 6, 6, 3] mood = [1, 1, 0, 0, 0] k = 2 print(solve(customers, mood, k))
输入
[2, 3, 6, 6, 3], [1, 1, 0, 0, 0], 2输出结果
17