
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; }};
发表评论
最新留言
关注你微信了!
[***.104.42.241]2025年04月07日 07时38分44秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Scala集合-数组、元组
2019-03-05
Flink Standalone集群安装和部署
2019-03-05
JAVA网络爬虫01-http client爬取网络内容
2019-03-05
04 程序流程控制
2019-03-05
java并发编程(1)
2019-03-05
C++&&STL
2019-03-05
双指针算法思想
2019-03-05
分组背包问题
2019-03-05
子集(LeetCode 78)
2019-03-05
旋转数组的最小值
2019-03-05
1004 Counting Leaves (30分)
2019-03-05
1093 Count PAT‘s (25分) 含DP做法
2019-03-05
一篇解决JMM与volatile详解(二)
2019-03-05
数据结构之数组与经典面试题(二)
2019-03-05
无锁并发框架-Disruptor的使用(二)
2019-03-05
Android wm命令
2019-03-05
boot.img 解包与打包
2019-03-05
Android4.4 平板背光设置
2019-03-05
递归复习--二叉搜索树
2019-03-05
jvm-02
2019-03-05