LeetCode 2064. Minimized Maximum of Products Distributed to Any Store

71 阅读1分钟

🔗 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;
        
    }
};