classSolution: defminimumSize(self, nums: List[int], maxOperations: int) -> int: # 设计一个check方法来 判断此开销是否 可以满足条件。 defcheck(x)->bool: ans = 0 for n in nums: if n%x==0: ans += n//x-1 else: ans += n//x return ans <= maxOperations # 二分法来找开销,题目要求是 最小化开销。 (maxoperations 和 开销 单调 成反比例) defsearch_II(check)->int: nums.sort() left = 1# 正整数再怎么分也不会分出0 right = nums[len(nums)-1] while left<=right: mid = (left+right)>>1 if check(mid): # 能够满足条件,题目要求找最小化,就往更小的找。 right = mid-1 else: left = mid+1 return left return search_II(check)