• leetcode1052


     1 class Solution:
     2     def maxSatisfied(self, customers: 'List[int]', grumpy: 'List[int]', X: int) -> int:
     3         n = len(customers)
     4         presum = 0
     5         j = 0
     6         for i in range(n):
     7             if grumpy[i] == 0:
     8                 presum += customers[i]
     9                 j += 1
    10             elif j < X:
    11                 presum += customers[i]
    12                 j += 1
    13 
    14         maxsati = presum
    15         for i in range(0,n-X):
    16             if grumpy[i] == 1:
    17                 presum -= customers[i]
    18             if grumpy[i+X] == 1:
    19                 presum += customers[i+X]
    20             maxsati = max(presum,maxsati)
    21 
    22         return maxsati

    本题的思路是滑动窗口,在区间i到i+X之间,假设全部都处于平静状态,将客人的满意度都加在一起。

    然后窗口向右滑动,最左侧的离开窗口,最右侧的新进入窗口,根据其原始状态,判断是进行加还是减。

    具体的判断逻辑在代码的15~20行。

  • 相关阅读:
    设计模式总结
    设计模式之工厂
    C#
    UML画图总结
    UML视频总结
    类图
    读取文件信息
    HMAC算法加密
    SHA_1计算消息摘要
    获取指定长度的随机字符串
  • 原文地址:https://www.cnblogs.com/asenyang/p/10926422.html
Copyright © 2020-2023  润新知