今天,书店老板有一家店打算试营业 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 l=0,r=0,n=customers.length,sum=0,res=0,c=0,rl=0,rr=0;while (r<n)//只计算不满意客户的滑动窗口{if(grumpy[r]==1)sum+=customers[r];if(r-l+1>X){if(grumpy[l]==1)sum-=customers[l];l++;}if(sum>=res){res=sum;rl=l;rr=r;//记录窗口位置和不满意客户的数量}r++;}for (int i = 0; i < n; i++) {if (grumpy[i]==0)c+=customers[i];else if(i>=rl&&i<=rr)   c+=customers[i];//处于结果窗口的客户,全部都变满意}return res+c;}
}

leetcode 1052. 爱生气的书店老板(滑动窗口)相关推荐

  1. LeetCode 1052 爱生气的书店老板 HERODING的LeetCode之路

    今天,书店老板有一家店打算试营业 customers.length 分钟.每分钟都有一些顾客(customers[i])会进入书店,所有这些顾客都会在那一分钟结束后离开. 在某些时候,书店老板会生气. ...

  2. LeetCode 1052. 爱生气的书店老板

    截止到目前我已经写了 500多道算法题,其中部分已经整理成了pdf文档,目前总共有1000多页(并且还会不断的增加),大家可以免费下载 下载链接:https://pan.baidu.com/s/1hj ...

  3. LeetCode Algorithm 1052. 爱生气的书店老板

    1052. 爱生气的书店老板 Ideas 找到一个时间长度为 X 的窗口包含最多原本因为老板生气而不满意的顾客(Sliding Window) ans = 老板不生气时间内的顾客总数(customer ...

  4. 1052. 爱生气的书店老板

    2020-07-06 1.题目描述 今天,书店老板有一家店打算试营业 customers.length 分钟.每分钟都有一些顾客 (customers[i])会进入书店,所有这些顾客都会在那一分钟结束 ...

  5. Feburary——1052.爱生气的书店老板

    class Solution:def maxSatisfied(self, customers: List[int], grumpy: List[int], X: int) -> int:siz ...

  6. 【LeetCode】【HOT】239. 滑动窗口最大值(双向队列)

    [LeetCode][HOT]239. 滑动窗口最大值 文章目录 [LeetCode][HOT]239. 滑动窗口最大值 package hot;import java.util.Arrays; im ...

  7. LeetCode-1052:爱生气的书店老板

    题目描述: 今天,书店老板有一家店打算试营业 customers.length 分钟.每分钟都有一些顾客(customers[i])会进入书店,所有这些顾客都会在那一分钟结束后离开. 在某些时候,书店 ...

  8. LeetCode 632. 最小区间(排序+滑动窗口)

    文章目录 1. 题目 2. 解题 1. 题目 你有 k 个升序排列的整数数组. 找到一个最小区间,使得 k 个列表中的每个列表至少有一个数包含在其中. 我们定义如果 b-a < d-c 或者在 ...

  9. LeetCode 904. 水果成篮(滑动窗口)

    1. 题目 在一排树中,第 i 棵树产生 tree[i] 型的水果. 你可以从你选择的任何树开始,然后重复执行以下步骤: 把这棵树上的水果放进你的篮子里.如果你做不到,就停下来. 移动到当前树右侧的下 ...

最新文章

  1. php和python哪个好-写后端 Python,nodejs和php哪个更好一些?
  2. 回文串判定_JAVA
  3. flutter listview 滚动到指定位置_Flutter 布局原理及实战
  4. Oracle ora01410,一次ORA-01410故障的解决
  5. C++的背影 ——C++之父Bjarne Stroustrup印象(作者:左轻侯)
  6. 高数_第3章重积分_三重积分之2__先一后二和先二后一
  7. jquery解绑、绑定笔记
  8. 网友反映学校计算机科学与工程学院教师,华南理工大学一院长被指篡改考生成绩 校方:四名涉事人员停职调查...
  9. Graphviz解决图论简单画图
  10. 获取加速传感器的值 APK
  11. Linux系统安装QQ
  12. PPT中一种类似手写的字体
  13. UOS和Deepin的前世今生
  14. graphpad如何检测方差齐_如何用 GraphPad prism进行 t 检验?
  15. 记录-简易多媒体流分析工具参数
  16. 展会邀请|虹科诚邀您3月29-31日参加深圳国际传感器与应用技术展览会!
  17. xv6---Lab3: page tables
  18. 修改linux内核的开机图片
  19. 狂神笔记-SpringMVC
  20. 在职场中如何清晰表达、高效沟通

热门文章

  1. Linux socket编程(一) 对套接字操作的封装
  2. 字符串的规范使用(二)
  3. 1073 多选题常见计分法 (20 分)
  4. 1062. Talent and Virtue (25)
  5. 老笔记整理四:字符串的完美度
  6. 4.6.2 软件测试的步骤
  7. Pile 0009: Vim命令梳理
  8. 【英语天天读】第一场雪
  9. 让 C#智能注释时允许换行
  10. Semantic Web 文章目录