/** * 1283. Find the Smallest Divisor Given a Threshold * https://leetcode.com/problems/find-the-smallest-divisor-given-a-threshold/ * Difficulty: Medium * * Given an array of integers nums and an integer threshold, we will choose a positive integer * divisor, divide all the array by it, and sum the division's result. Find the smallest divisor * such that the result mentioned above is less than or equal to threshold. * * Each result of the division is rounded to the nearest integer greater than or equal to that * element. (For example: 7/3 = 3 and 10/2 = 5). * * The test cases are generated so that there will be an answer. */ /** * @param {number[]} nums * @param {number} threshold * @return {number} */ var smallestDivisor = function(nums, threshold) { let left = 1; let right = Math.max(...nums); while (left < right) { const mid = Math.floor((left + right) / 2); const sum = nums.reduce((acc, num) => acc + Math.ceil(num / mid), 0); if (sum <= threshold) { right = mid; } else { left = mid + 1; } } return left; };