原题地址(中等)

方法1—滑动窗口

思路

这题还蛮简单的其实。
就用滑动串口就好啦。

代码

  1. class Solution {
  2. public:
  3. int maxSatisfied(vector<int>& customers, vector<int>& grumpy, int X) {
  4. int ans = 0, n = customers.size();
  5. for(int i = 0; i < n; i++) {
  6. if(i < X) ans += customers[i];
  7. else if(grumpy[i] == 0) ans += customers[i];
  8. }
  9. int maxAns = ans;
  10. for(int i = X; i < n; i++) {
  11. if(grumpy[i - X] == 1) ans -= customers[i - X];
  12. if(grumpy[i] == 1) ans += customers[i];
  13. maxAns = max(maxAns, ans);
  14. }
  15. return maxAns;
  16. }
  17. };

时空复杂度

时间1052. 爱生气的书店老板 - 图1 空间1052. 爱生气的书店老板 - 图2