1052. 愛生氣的書店老闆

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;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章