LeetCode 1052 愛生氣的書店老闆

2021-10-04 01:12:51 字數 1568 閱讀 3820

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

1 <= x <= customers.length == grumpy.length <= 20000

0 <= customers[i] <= 1000

0 <= grumpy[i] <= 1

關鍵字:滑動視窗,解析都在注釋裡面!

#include #include using namespace std;

/* vector: 生氣:1, 不生氣為:0 */

class solution

} else

/* 計算為0,不生氣的顧客 */

for (j = i; j < grumpy.size(); j++)

}/* 不要忽略第乙個視窗。沒錯,我忽略了 */

if (res < sum_tmp)

/* 維護長度為x的視窗:

grumpy[i] = 1,生氣,說明之前在秘密技巧範圍內,需要減去

grumpy[i+x] = 1,生氣,現在要進入秘密技巧範圍,所以加上

其他為0,不生氣的顧客已經存過了。

*/for (i = 0; i < (grumpy.size() - x); i++)

if (grumpy[i + x] == 1)

if (res < sum_tmp)

}/* 暴力:超時 */

/*for (int i = 0; i <= (grumpy.size() - x); i++)

for (int j = 0; j < customers.size(); j++)

}if (res < sum_tmp) }*/

} return res;

}};int main() ;

vectorgrumpy1 = ;

int x1 = 3;

vectorcustomers2 = ;

vectorgrumpy2 = ;

int x2 = 2;

solution* ps = new solution();

cout << ps->maxsatisfied(customers2, grumpy2, x2) << endl;

return 0;

}

leetcode1052愛生氣的書店老闆

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

LeetCode1052 愛生氣的書店老闆

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

leetcode 1052 愛生氣的書店老闆

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