public int minimumSize(int[] nums, int maxOperations) {
int left = 1, right = Arrays.stream(nums).max().getAsInt();
int ans = 0;
//在不超过给定次数情况下,找出最小的值
while (left <= right) {
int y = (left + right) / 2;
long ops = 0;
//计算次数
for (int x : nums) {
ops += (x - 1) / y;
}
if (ops <= maxOperations) {
ans = y;
right = y - 1;
} else {
left = y + 1;
}
}
return ans;
}
二分查找leetcode.1760
于 2022-12-22 20:30:04 首次发布