Minimum Number of Days to Make m Bouquets LeetCode solution in Java

1
class Solution {
2
public int minDays(int[] bloomDay, int m, int k) {
3
if (m * k > bloomDay.length) return -1;
4

5
int low = Integer.MAX_VALUE, high = 0;
6
for (int i : bloomDay) {
7
low = Math.min(low, i);
8
high = Math.max(high, i);
9
}
10
while (low <= high) {
11
int mid = low + (high - low) / 2;
12
if (isPossible(bloomDay, mid, m, k)) high = mid - 1;
13
else low = mid + 1;
14
}
15
return low;
16
}
17

18
private boolean isPossible(int[] bloomDay, int maxDays, int m, int k) {
19
for (int i = 0; i < bloomDay.length; i++) {
20
int count = k;
21
while (i < bloomDay.length && bloomDay[i] <= maxDays) {
22
count--;
23
if (count == 0) {
24
m--;
25
break;
26
}
27
i++;
28
}
29
if (m == 0) return true;
30
}
31
return false;
32
}
33
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0