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