2
public int minDays(int[] bloomDay, int m, int k) {3
if (m * k > bloomDay.length) return -1;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);11
int mid = low + (high - low) / 2;12
if (isPossible(bloomDay, mid, m, k)) high = mid - 1;18
private boolean isPossible(int[] bloomDay, int maxDays, int m, int k) {19
for (int i = 0; i < bloomDay.length; i++) {21
while (i < bloomDay.length && bloomDay[i] <= maxDays) {29
if (m == 0) return true;