首页 > 其他分享 >【每日一题】爱生气的书店老板

【每日一题】爱生气的书店老板

时间:2024-04-26 19:33:42浏览次数:30  
标签:customers 书店 increase 爱生气 satisfiy grumpy total minutes 老板

1052. 爱生气的书店老板

有一个书店老板,他的书店开了 n 分钟。每分钟都有一些顾客进入这家商店。给定一个长度为 n 的整数数组 customers ,其中 customers[i] 是在第 i 分钟开始时进入商店的顾客数量,所有这些顾客在第 i 分钟结束后离开。

在某些时候,书店老板会生气。 如果书店老板在第 i 分钟生气,那么 grumpy[i] = 1,否则 grumpy[i] = 0

当书店老板生气时,那一分钟的顾客就会不满意,若老板不生气则顾客是满意的。

书店老板知道一个秘密技巧,能抑制自己的情绪,可以让自己连续 minutes 分钟不生气,但却只能使用一次。

请你返回 这一天营业下来,最多有多少客户能够感到满意

示例 1:

输入:customers = [1,0,1,2,1,1,7,5], grumpy = [0,1,0,1,0,1,0,1], minutes = 3
输出:16
解释:书店老板在最后 3 分钟保持冷静。
感到满意的最大客户数量 = 1 + 1 + 1 + 1 + 7 + 5 = 16.

示例 2:

输入:customers = [1], grumpy = [0], minutes = 1
输出:1

提示:

  • n == customers.length == grumpy.length
  • 1 <= minutes <= n <= 2 * 104
  • 0 <= customers[i] <= 1000
  • grumpy[i] == 0 or 1

这题用滑动窗口来做。思路如下:

  1. 首先,计算出老板不使用秘密技巧时,所有顾客满意的数量。

  2. 接下来,使用一个长度为 minutes 的滑动窗口,计算每个窗口内老板使用秘密技巧后可以使顾客满意的数量增加多少。具体步骤如下:

    • 初始化窗口,计算第一个窗口内老板使用秘密技巧后可以使顾客满意的数量增加多少。
    • 从第二个窗口开始,每次滑动窗口时,计算新窗口内老板使用秘密技巧后可以使顾客满意的数量增加多少。同时,需要减去上一个窗口的第一个分钟的满意顾客数量(如果老板在这个时间段使用秘密技巧的话)。
  3. 返回最大的满意顾客数量。

class Solution(object):
    def maxSatisfied(self, customers, grumpy, minutes):
        """
        :type customers: List[int]
        :type grumpy: List[int]
        :type minutes: int
        :rtype: int
        """
        n = len(customers)
        total_satisfy = sum(customers[i] for i in range(n) if grumpy[i] == 0)
        current_increase = 0
        
        # 从第一个窗口计算能增加多少满意人数
        for i in range(minutes):
            if grumpy[i] == 1:
                current_increase += customers[i]
        
        # 长为minutes的滑动窗口
        max_increase = current_increase
        for i in range(minutes, n):
            if grumpy[i] == 1:
                current_increase += customers[i]
            if grumpy[i - minutes] == 1:
                current_increase -= customers[i - minutes]
            max_increase = max(max_increase, current_increase)
        
        return total_satisfy + max_increase

我自己写的题解是这样的,没有上面那个简洁,也放一下:

class Solution(object):
    def maxSatisfied(self, customers, grumpy, minutes):
        """
        :type customers: List[int]
        :type grumpy: List[int]
        :type minutes: int
        :rtype: int
        """
        happy = [1 - x for x in grumpy] # 不生气为1,生气为0
        total_satisfiy = sum(x * y for x, y in zip(customers, happy)) # 总满意人数
        # 初始化一个长为minutes的滑动窗口
        start = 0
        end = minutes
        # 从第一个窗口计算能增加多少满意人数
        for i in range(start, end):
            if happy[i] == 0:
                total_satisfiy += customers[i]
        max_satisfiy = total_satisfiy
        # 滑动窗口
        while end < len(customers):
            if happy[start] == 0:
                total_satisfiy -= customers[start]
            if happy[end] == 0:
                total_satisfiy += customers[end]
            if max_satisfiy < total_satisfiy:
                max_satisfiy = total_satisfiy
            start += 1
            end += 1
        
        return max_satisfiy

 

标签:customers,书店,increase,爱生气,satisfiy,grumpy,total,minutes,老板
From: https://www.cnblogs.com/Aikoin/p/18160738

相关文章

  • 小型网上书店——需求分析
    一、实验题目:需求分析二、实验目的1、掌握StarUML软件的安装;2、掌握利用StarUML工具分析、设计、绘制用例图;3、掌握利用StarUML工具分析、设计、绘制类图;4、掌握利用StarUML工具分析、设计、绘制状态图;5、掌握利用StarUML工具分析、设计、绘制顺序图。6、掌握利用StarUML......
  • 实验二-小型网络书店
    一、实验题目:需求分析(一)、功能需求分析用户注册与登录提供用户注册功能,用户可以通过填写注册信息注册成为会员。提供用户登录功能,已注册的用户可以使用账号和密码登录。图书浏览与搜索提供图书分类浏览功能,用户可以根据不同的分类查看图书列表。提供关键字......
  • 老板看过来:你的商业秘密安全吗?
    在现代企业运营中,保护商业秘密不仅是维护竞争优势的关键,也是确保企业长期发展的基石。然而,随着信息技术的快速发展和企业数字化转型的深入,商业秘密面临着前所未有的泄露风险。本文将探讨商业秘密泄露的常见原因,并提供有效的防护建议,帮助企业守护其最宝贵的资产。商业秘密泄露的......
  • java计算机毕业设计书店展销小程序【附源码+远程部署+程序+mysql】
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:在数字化时代,实体书店面临着前所未有的挑战。随着电子书和在线购书的普及,传统书店的销售模式受到了巨大冲击。为了适应这一变化,许多书店开始探索新的营销......
  • java毕业设计基于微信小程序的网上书店系统[附源码]
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:随着互联网技术的飞速发展,电子商务已经渗透到人们日常生活的方方面面。传统实体书店由于空间限制、库存管理、地理位置等因素,面临着巨大的运营压力和挑战......
  • Alfred使用AppleScript来实现一键隐藏功能(老板键)
    setappNamesto{"WeChat","QQ"}--将要隐藏的进程名称放入数组中tellapplication"SystemEvents"repeatwithappNameinappNamessetappProcesstofirstprocesswhosenameisappNamesetappIdtoidofappProcess......
  • java计算机毕业设计(附源码)新知书店(ssm+mysql+maven+LW文档)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:新知书店,作为一家专注于传播知识和文化的零售场所,承载着促进社会文化发展和满足人们精神需求的重要使命。在数字化时代背景下,实体书店面临着前所未有的挑......
  • L2-042 老板的作息表
    代码很烂。#include<bits/stdc++.h>usingnamespacestd;structnode{ intstart[10]; intend[10];}s[100000];boolcmp(noden1,noden2){ for(inti=0;i<3;i++){ if(n1.start[i]!=n2.start[i]){ returnn1.start[i]<n2.start[i]; }......
  • 【网站项目】网上电子书店
    ......
  • C# Winform添加全局快捷键(老板键)
    usingSystem;usingSystem.Collections.Generic;usingSystem.Runtime.InteropServices;usingSystem.Windows.Forms;namespacedrmaple{classHotKey{//如果函数执行成功,返回值不为0。//如果函数执行失败,返回值为0。要得到扩展错误信息,调用Ge......