博客
关于我
LeetCode:1052. 爱生气的书店老板————中等
阅读量:362 次
发布时间:2019-03-05

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

为了解决这个问题,我们需要找到书店老板营业期间最多有多少客户能够感到满意。满意客户数包括两部分:一部分是不生气的时间的顾客数量,另一部分是在某个连续X分钟窗口内被赶走的顾客数量。

方法思路

  • 问题分析

    • 书店老板在每分钟可能会生气或者保持冷静。
    • 如果生气,那分钟的顾客不满意,如果保持冷静,顾客满意。
    • 老板可以使用一次秘密技巧,使其连续X分钟保持冷静。
  • 关键思路

    • 计算所有不生气的顾客数量(sum1)。
    • 使用滑动窗口技术找到在连续X分钟内生气的顾客数量的最大值(sum2)。
  • 算法选择

    • 使用滑动窗口技术来解决窗口问题,确保时间复杂度为O(n)。
    • 两个循环遍历数组,分别计算sum1和sum2。
  • 解决代码

    from typing import Listclass Solution:    def maxSatisfied(self, customers: List[int], grumpy: List[int], X: int) -> int:        n = len(customers)        sum1 = 0        for i in range(n):            if grumpy[i] == 0:                sum1 += customers[i]                if X == 0:            return sum1                current = 0        for i in range(X):            current += customers[i] * grumpy[i]        max_sum2 = current                for i in range(X, n):            current += customers[i] * grumpy[i] - customers[i - X] * grumpy[i - X]            if current > max_sum2:                max_sum2 = current                return sum1 + max_sum2

    代码解释

  • 初始化

    • sum1 计算所有不生气的顾客数量。
    • current 用于滑动窗口中当前窗口内生气的顾客数量总和。
  • 滑动窗口

    • 初始化窗口为前X个元素,计算初始窗口内生气的顾客数量总和。
    • 遍历剩余元素,每次滑动窗口,更新窗口内生气的顾客数量总和,记录最大值。
  • 返回结果

    • 总满意客户数是sum1加上最大窗口内生气的顾客数量总和。
  • 通过这种方法,我们可以在O(n)时间复杂度内解决问题,适用于大数据量。

    转载地址:http://kvog.baihongyu.com/

    你可能感兴趣的文章
    Java 异常
    查看>>
    BP神经网络学习--MATLAB源码详细注释
    查看>>
    LeetCode122.买卖股票的最佳时机2Golang版
    查看>>
    还在花冤枉钱找人做电子签名?看这儿,教你制作纯手写电子签名
    查看>>
    Java 知识点总结篇(2)
    查看>>
    Python 知识点总结篇(2)
    查看>>
    Python 知识点总结篇(3)
    查看>>
    Numpy 如何操作数组
    查看>>
    Win10 环境下安装压缩包版本 MySQL-8.0.13
    查看>>
    爬取网易科技滚动新闻
    查看>>
    vuex modules
    查看>>
    vue父子组件传参的4种方式
    查看>>
    中缀表达式转后缀表达式
    查看>>
    Java笔记:单链表
    查看>>
    Java基础题:小根堆为8,15,10,21,34,16,12,删除关键字8之后需重建堆,需要的比较次数为?
    查看>>
    phthon基本语法——温习
    查看>>
    sleep、wait、yield、join——简介
    查看>>
    web项目配置
    查看>>
    VTK:相互作用之KeypressEvents
    查看>>
    VTK:相互作用之MouseEventsObserver
    查看>>