Untitled
unknown
plain_text
3 years ago
742 B
9
Indexable
int findMinimumNumberOfCandies(int[] candies, int hour) {
int max = 0;
for(int candie : candies) {
max = Math.max(max, candie);
}
start = 0;
end = max;
int result = Integer.Max_Value;
while(start <= end) {
int mid = start + (end - start)/2;
boolean canFinish = canFinishCandies(candies, hour, mid);
if (canFinish) {
result = Math.min(result, mid);
end = mid - 1;
} else {
start = mid + 1;
}
}
return result == Integer.Max_Value ? -1 : result;
}
boolean canFinishCandies(int[] candies, int hour, int candiesPerHour) {
int neededHours = 0;
for(int candie : candies) {
neededHours += (int) Math.ceiling(candie/candiesPerHour);
if (neededHours > hour) {
return false;
}
}
return true;
}Editor is loading...