LeetCode 每日一题 1052. 爱生气的书店老板 (贪心)
发布日期:2021-05-08 02:34:19 浏览次数:24 分类:原创文章

本文共 863 字,大约阅读时间需要 2 分钟。

分析

把老板生气时的下标加入到队列q中,把不生气的所有值加起来。
枚举q中每个元素,计算以q[i]为首个下标,长度为X的数组的总和,如果得到的值比ans大,就更新ans。
最后返回ans。

C++ 代码

class Solution {public:    int ans,hh,tt=-1;    int maxSatisfied(vector<int>& customers, vector<int>& grumpy, int X) {        int n=customers.size();        int q[n+1];        for(int i=0;i<n;i++)        {            if(!grumpy[i])      //老板不生气,计算总和                ans+=customers[i];            else                    q[++tt]=i;      //老板生气,下标加入队列q        }        int res=ans;        while(hh<=tt)       //枚举q中每个元素        {            auto t=q[hh++];            int temp=0;            for(int i=t,j=0;(i<n && j<X);i++,j++)   //计算以q[i]为首下标,长度为X的数组和            {                if(grumpy[i])   //加上老板生气时的顾客数                    temp+=customers[i];            }            if(res+temp>ans)    //更新答案                ans=res+temp;        }        return ans;    }};
上一篇:Web框架——Flask系列之综合案例——图书管理系统(十)
下一篇:LeetCode 每日一题 766. 托普利茨矩阵

发表评论

最新留言

关注你微信了!
[***.104.42.241]2025年04月07日 07时38分44秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章