滑动窗口模板

滑动窗口模板

1052. 爱生气的书店老板 为例

class Solution {
/**
* @param Integer[] $customers
* @param Integer[] $grumpy
* @param Integer $X
* @return Integer
*/
function maxSatisfied($customers, $grumpy, $X) {
if (empty($customers)) {
return 0;
}
// 1. 计算初始状态: 不压抑的时候,最大的满意人数
$maxSat = 0;
foreach ($grumpy as $key => $g) {
if ($g == 0) {
$maxSat += $customers[$key];
}
}
// 1.1 初始化左右指针位置
$len = count($customers);
$left = $right = 0;
$curSat = $maxSat;
// 2. 滑窗具体代码
// 2.1 右指针一直往右做
while ($right < $len) {
$span = $right - $left + 1;
// 2.1 直到遇到临界条件之后,左指针往右走,知道满足临界条件
if ($span > $X) {
if ($grumpy[$left]) {
$curSat -= $customers[$left];
}
$left ++;
}
// 计算当前窗口的数值
if ($grumpy[$right]) {
$curSat += $customers[$right];
}
// 最终结果比较
$maxSat = max($curSat, $maxSat);
$right++;
}
return $maxSat;
}
}

参考

多看几个题解:

  1. lc 的官方题解: 爱生气的书店老板
    一般官方题解的思路会非常详细,建议多看几遍
  2. 用「秘密技巧」挽留住最多的原本因为生气而被赶走的顾客
posted @   吴丹阳-V  阅读(173)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示