Rust 力扣 - 1052. 爱生气的书店老板

题目描述

在这里插入图片描述

题解思路

我们遍历长度为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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

醉墨居士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值