[
binary search
]
Leetcode 2064. Minimized Maximum of Products Distributed to Any Store
Problem statement
https://leetcode.com/problems/minimized-maximum-of-products-distributed-to-any-store/
Solution
The idea of this problem is to use binary search, where we ask question: given mid
restriction for each shop, how many shops we need to distribute all goods? For example if we have Q = [6, 11]
and mid = 6
, then we need 3 shops: [6], [6, 5]
. If we have mid = 3
, we need 6
shops: [3, 3], [3, 3, 3, 2]
. What we need to find is the smallest mid
, such that we have <= n
shops needed.
Complexity
It is O(n * log W)
, where W = sum(Q)
.
Code
class Solution:
def minimizedMaximum(self, n, Q):
beg, end = 0, max(Q)
while beg + 1 < end:
mid = (beg + end)//2
if sum(ceil(i/mid) for i in Q) <= n:
end = mid
else:
beg = mid
return end