1052 愛生氣的書店老闆

2021-10-24 15:36:20 字數 1183 閱讀 7479

今天,書店老闆有一家店打算試營業 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.

這題的x可以看做是滑動視窗的大小,因此,可以計算將每乙個滑動視窗內的grumpy資料全部置為0後,可獲得的滿意度增益。舉例來說,

customers = [1,0,1,2,1,1,7,5], grumpy = [0,1,0,1,0,1,0,1], 第乙個滑動視窗w1 = [0,1,0],對應的custom = [1,0,1], 此時,如果將w1全部置為0,那麼顧客滿意度增益為10+01+1*0 = 0。注意,這裡指的是增益,因為custom資料的第乙個元素本身就為0,也就是說,無論最終滑動視窗怎麼滑,這個點對應的顧客滿意度不會改變。

這樣的話,選擇能獲得最大滿意度增益的滑動視窗,計算最大的滿意度增益,然後,加上其他位置固有的滿意度,就是最終的滿意度最大值。

public

intcompute

(int

a,int[

] b)

}return sum;

}public

intmaxsatisfied

(int

customers,

int[

] grumpy,

int x)

if(maxfor(

int i = max_index;i)return

compute

(customers,grumpy)

;}

我的思路雖然能過測試,但是只能超19%的提交,應該還有更好的方法。以後找時間再去學習

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...