2020-07-06
1.題目描述
今天,書店老闆有一家店打算試營業 customers.length 分鐘。每分鐘都有一些顧客
(customers[i])會進入書店,所有這些顧客都會在那一分鐘結束後離開。
在某些時候,書店老闆會生氣。 如果書店老闆在第 i 分鐘生氣,那麼 grumpy[i] = 1,
否則 grumpy[i] = 0。 當書店老闆生氣時,那一分鐘的顧客就會不滿意,不生氣則他們是滿意的。
書店老闆知道一個祕密技巧,能抑制自己的情緒,可以讓自己連續 X 分鐘不生氣,但卻只能使用一次。
請你返回這一天營業下來,最多有多少客戶能夠感到滿意的數量。
2.題解
滑動窗口,這裏窗口的大小是固定的,每次進行更新即可。
3.代碼
class Solution {
public:
int maxSatisfied(vector<int>& customers, vector<int>& grumpy, int X) {
int len=customers.size();
if (!len) return 0;
int res=0,s1=0,s2=0;
for (int i=0;i<len;i++){
if (i<X) s1+=customers[i];
else{
if (grumpy[i]==0) s2+=customers[i];
}
}
res=s1+s2;
for (int i=0;i<len-X;i++){
s1-=customers[i];
s1+=customers[i+X];
if (grumpy[i]==0){
s2+=customers[i];
}
if (grumpy[i+X]==0){
s2-=customers[i+X];
}
res=max(res,s1+s2);
}
return res;
}
};