题目描述
题解思路
我们遍历长度为minutes的窗口,我们需要记录窗口内的生气覆盖的客户数量,同时记录全局不生气覆盖的客户数量,遍历过程中刷新窗口内的生气覆盖的客户数量最大值
结果为全局不生气覆盖的客户数量 + 窗口内的生气覆盖的客户数量最大值
题解代码
impl Solution {
pub fn max_satisfied(customers: Vec<i32>, grumpy: Vec<i32>, minutes: i32) -> i32 {
let mut sum = 0;
let mut ans = sum;
for i in 0..minutes as usize {
if grumpy[i] == 0 {
ans += customers[i];
} else {
sum += customers[i];
}
}
let mut max_sum = sum;
for i in minutes as usize..customers.len() {
if grumpy[i] == 0 {
ans += customers[i];
}
sum += customers[i] * grumpy[i] - customers[i - minutes as usize] * grumpy[i - minutes as usize];
max_sum = max_sum.max(sum);
}
ans + max_sum
}
}
题目链接
https://leetcode.cn/problems/grumpy-bookstore-owner/description/