Find the Smallest Divisor Given a Threshold
给一个数组和一个数n, 求一个最小数, 作为除数时让数组每个数初它的和小于n. 这个题是二分搜索. 一个个找.
class Solution {
public int smallestDivisor(int[] nums, int threshold) {
int l = 1;
int h = 1000000;
while(l < h) {
int m = (h - l) / 2 + l;
if(find(nums, m) > threshold)
l = m + 1;
else
h = m;
}
return l;
}
private int find(int[] nums, int d) {
int res = 0;
for(int n : nums) {
res += (n + d - 1) / d;
}
return res;
}
}