Re: [闲聊] 每日leetcode

楼主: JIWP (JIWP)   2024-06-19 18:35:23
补一下这两天的每日
1482. Minimum Number of Days to Make m Bouquets
给一个array bloomDay,bloomDay[i]代表第i朵花会在几天开花
需要做m个花束、每个花束需要k朵花
请问最少需要几天才可以收集完?
思路:
找出bloomDay里最大、小的天数
再用这两个天数进行2分搜寻
看一下有没有足够的花束
大概就这样
golang code :
func minDays(bloomDay []int, m int, k int) int {
n := len(bloomDay)
if n < m*k {
return -1
}
maxday := slices.Max(bloomDay)
minday := slices.Min(bloomDay)
chk := func(day int) bool {
group, cnt := 0, 0
for _, val := range bloomDay {
if val <= day {
cnt++
if cnt == k {
group++
cnt=0
}
} else {
cnt = 0
}
}
return group >= m
}
for maxday > minday {
midday := minday + (maxday-minday)/2
if chk(midday) {
maxday = midday
} else {
minday = midday + 1
}
}
return minday
}
作者: oin1104 (是oin的说)   2024-06-19 18:53:00
大师

Links booklink

Contact Us: admin [ a t ] ucptt.com