1052 愛生氣的書店老闆

2021-10-19 21:02:19 字數 1517 閱讀 2853

今天,書店老闆有一家店打算試營業 customers.length 分鐘。每分鐘都有一些顧客(customers[i])會進入書店,所有這些顧客都會在那一分鐘結束後離開。

在某些時候,書店老闆會生氣。 如果書店老闆在第 i 分鐘生氣,那麼 grumpy[i] = 1,否則 grumpy[i] = 0。 當書店老闆生氣時,那一分鐘的顧客就會不滿意,不生氣則他們是滿意的。

書店老闆知道乙個秘密技巧,能抑制自己的情緒,可以讓自己連續 x 分鐘不生氣,但卻只能使用一次。

請你返回這一天營業下來,最多有多少客戶能夠感到滿意的數量。

示例:輸入: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.

# 先求出不生氣時顧客數量all_one,再求出長度為0~x時生氣時的顧客數量all_zero並賦值於x便於後期比較,用i迴圈x~len(customers),若i為生氣則累加人數,若i - x為生氣則減少人數(這是為了使最大區間長度和x大小一致),最終比較x和all_one並返回all_zero+x

class

solution

:def

maxsatisfied

(self, customers: list[

int]

, grumpy: list[

int]

, x:

int)

->

int:

all_one =

0# 初始化生氣時的顧客為0

all_zero =

0# 初始化不生氣時顧客為0

# 計算出不生氣時顧客數量

for i in

range

(len

(customers)):

if grumpy[i]==0

: all_zero += customers[i]

# 計算出0~x之間生氣時顧客數量

for i in

range

(x):

if grumpy[i]==1

: all_one += customers[i]

x = all_one # 初始化x

for i in

range

(x,len

(customers)):

if grumpy[i]==1

: all_one += customers[i]

if grumpy[i - x]==1

:# 始終保持最大區間長度 <= x

all_one -= customers[i - x]

x =max(x, all_one)

return x + all_zero

1052 愛生氣的書店老闆

今天,書店老闆有一家店打算試營業 customers.length 分鐘。每分鐘都有一些顧客 customers i 會進入書店,所有這些顧客都會在那一分鐘結束後離開。在某些時候,書店老闆會生氣。如果書店老闆在第 i 分鐘生氣,那麼 grumpy i 1,否則 grumpy i 0。當書店老闆生氣時...

1052 愛生氣的書店老闆

今天,書店老闆有一家店打算試營業customers.length分鐘。每分鐘都有一些顧客 customers i 會進入書店,所有這些顧客都會在那一分鐘結束後離開。在某些時候,書店老闆會生氣。如果書店老闆在第i分鐘生氣,那麼grumpy i 1,否則grumpy i 0。當書店老闆生氣時,那一分鐘的...

愛生氣的書店老闆

空閒時間,又翻看了一下 leetcode 上的這道題,題目如下 今天,書店老闆有一家店打算試營業 customers.length 分鐘。每分鐘都有一些顧客 customers i 會進入書店,所有這些顧客都會在那一分鐘結束後離開。在某些時候,書店老闆會生氣。如果書店老闆在第 i 分鐘生氣,那麼 g...