LeetCode/DailyQuestion/1052_Grumpy_bookstore_owner.py
2024-06-20 18:01:08 -07:00

35 lines
1.1 KiB
Python

def maxSatisfied(customers, grumpy, minutes):
"""
:type customers: List[int]
:type grumpy: List[int]
:type minutes: int
:rtype: int
"""
# Sliding Window Approach
i = 0
j = 0
sum_unsatisfied = 0
max_sum = float('-inf')
# Using sliding window
while j < len(grumpy):
if grumpy[j] == 1: # Calculation part
sum_unsatisfied += customers[j]
if j - i + 1 < minutes:
j += 1
elif j - i + 1 == minutes:
max_sum = max(max_sum, sum_unsatisfied)
if grumpy[i] == 1: # Removing calculation part using i
sum_unsatisfied -= customers[i]
i += 1 # Sliding the window
j += 1
for k in range(len(customers)): # Now finding only satisfied customers (grumpy[k] == 0)
if grumpy[k] == 0:
max_sum += customers[k]
return max_sum
maxSatisfied([1,0,1,2,1,1,7,5], [0,1,0,1,0,1,0,1], 3)