LeetCode/go/minimum-number-of-days-to-make-m-bouquets.go

44 lines
603 B
Go
Raw Normal View History

package main
func minDays(bloomDay []int, m int, k int) int {
getBouquets := func(day int) int {
bouquets := 0
count := 0
for i := range bloomDay {
if bloomDay[i] <= day {
count++
} else {
count = 0
}
if count == k {
bouquets++
count = 0
}
}
return bouquets
}
firstDay := 0
lastDay := 0
for _, day := range bloomDay {
lastDay = max(lastDay, day)
}
minDay := -1
for firstDay <= lastDay {
mid := (firstDay + lastDay) / 2
if getBouquets(mid) >= m {
minDay = mid
lastDay = mid - 1
} else {
firstDay = mid + 1
}
}
return minDay
}