🔗 leetcode.com/problems/mi…
题目
- n 个商店,m 个类型的商品,每个商品的个数是 quantities[i]
- 分配商品,限制是,一个商店只能拥有一个类型的商品,数量随意,也可以为 0
- 假设 x 是满足分配条件下的,商店拥有商品数量的最大值
- 求满足分配条件的情况下,x 的最小值
思路
- 假设当前商店可以拥有商品的最大值为 a,看 m 个商品是否可以分配完
- 二分,探寻满足条件的最小的 a
代码
class Solution {
public:
bool is_distributed(int num, int n, vector<int>& quantities) {
int count = 0
for (auto quan : quantities) {
count += quan / num
if (quan % num) count++
}
return count <= n
}
int minimizedMaximum(int n, vector<int>& quantities) {
int max_quan = 0
for (auto quan : quantities) {
max_quan = max(max_quan, quan)
}
int l = 1, r = max_quan
while (l < r) {
int mid = (l + r) >> 1
if (is_distributed(mid, n, quantities)) r = mid
else l = mid + 1
}
return l
}
}