Note:
滑动窗口,首先我们判断出来X分钟自己憋住气能挽留住多少顾客,找到挽留住最多的那个让老板在那里憋住,剩下的时间就按平常的来,代码如下:
class Solution {
public:
int maxSatisfied(vector<int>& customers, vector<int>& grumpy, int minutes) {
vector<int> value;
for(int i = 0; i < customers.size() - minutes + 1; i ++)
{
int ans = 0;
for(int j = 0; j < minutes; j ++)
if(grumpy[i + j] == 1)
ans += customers[i + j];
value.push_back(ans);
}
int maxNum = 0;
for(int i = 1; i < value.size(); i ++)
if(value[i] > value[maxNum])
maxNum = i;
int res = 0;
for(int i = 0; i < customers.size(); i ++)
{
if(i == maxNum)
{
for(int j = 0; j < minutes; j ++)
res += customers[i + j];
i = i + minutes - 1;
}
else
if(grumpy[i] != 1)
res += customers[i];
}
return res;
}
};