zoukankan      html  css  js  c++  java
  • 5920. 分配给商店的最多商品的最小值

    二分法

    看题目给出的范围,O(n^2)的时间复杂度肯定会超时,O(n)时间复杂度的算法又没思路,这个时候不妨试试O(n*logn)的时间复杂度,也即利用二分法。
    不得感叹二分法的强大,这也为暴力搜索提供了一种新的思路————即利用二分法将结果试出来。
    具体到这题的做法就是利用二分法在1到1e5的范围内求出最小满足条件的x,什么叫满足条件呢,即在保证每家商店商品数量不超过x的情况下需要的商店数目不能超过n。

            public int minimizedMaximum(int n, int[] quantities) {
            int left = 1, right = 100000;
    		while (left <= right) {
    			int mid = (left + right) / 2;
    			int count = 0;//需要的最少商店数目
    			for (int quantity : quantities) {
    				count += (quantity + mid - 1) / mid;//向上取整
    			}
    			if (count > n) {
    				left = mid + 1;//不满足条件
    			} else {
    				right = mid - 1;
    			}
    		}
    		return left;
        }
    
  • 相关阅读:
    Metricbeat
    Flask安装与基本配置
    web框架
    git
    占位
    算法
    面试
    CMDB
    order by关键字排序优化
    动态主机配置协议-DHCP
  • 原文地址:https://www.cnblogs.com/Frank-Hong/p/15519477.html
Copyright © 2011-2022 走看看