LeetCode每日一题,1052. Grumpy Bookstore Owner
先看题目描述
大意就是给定数组 customers,grumpy 和整数 X,customers 代表每分钟来的顾客数量,grumpy 记录老板什么时候生气,当 grumpy[i] 为 1 时代表老板在第 i 分钟生气,生气时顾客就不会满意,老板有一个特殊的技巧,可以令自己在连续的 X 分钟内保持冷静,但这个技巧只可以用一次,问可以满意的顾客数量最多为多少
算法和思路
滑动窗口
首先考虑老板不使用保持冷静的技巧时,由于 grumpy 数组和 customers 数组都已给定,那么可以得到满意的顾客数量是固定的,设为 A。然后使用保持冷静的技巧,就是可以使一些之前不能满意的顾客变得满意,设额外增加的变满意的顾客数量为 B,于是我们就可以构建一个长度为 X 的滑动窗口,移动滑动窗口来遍历数组,期间统计最大的 B 值,最后返回 A + B 即可
算法源码
滑动窗口
1 | class Solution { |