潜江做网站的公司有哪些,网站如何做企业电子宣传册,网站建设的关键,常州个性化网站建设今天#xff0c;书店老板有一家店打算试营业 customers.length 分钟。每分钟都有一些顾客#xff08;customers[i]#xff09;会进入书店#xff0c;所有这些顾客都会在那一分钟结束后离开。
在某些时候#xff0c;书店老板会生气。 如果书店老板在第 i 分钟生气#xf…今天书店老板有一家店打算试营业 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
解题思路
维护一个大小为X的滑动窗口找出一个窗口期使得增加的满意客户最多就是找出原本最多客户不满意的那个窗口
代码
class Solution {public int maxSatisfied(int[] customers, int[] grumpy, int X) {int l0,r0,ncustomers.length,sum0,res0,c0,rl0,rr0;while (rn)//只计算不满意客户的滑动窗口{if(grumpy[r]1)sumcustomers[r];if(r-l1X){if(grumpy[l]1)sum-customers[l];l;}if(sumres){ressum;rll;rrr;//记录窗口位置和不满意客户的数量}r;}for (int i 0; i n; i) {if (grumpy[i]0)ccustomers[i];else if(irlirr) ccustomers[i];//处于结果窗口的客户全部都变满意}return resc;}
}