Find the Smallest Divisor Given a Threshold LeetCode solution in Java
1class Solution {2public int smallestDivisor(int[] a, int h) {3int l = 1, r = a[0];4for (int x : a) if (x > r) r = x;56while (l < r) {7int m = l + (r - l) / 2;8if (valid(a, m, h)) r = m;9else l = m + 1;10}1112return l;13}1415private boolean valid(int[] a, int m, int h) {16for (int x : a) if ((h -= (x + m - 1) / m) < 0) return false;17return true;18}19}